1

Выпущен новый снапшот DataparkSearch Engine версии 4.54. Вы можете скачать его с Google Drive.

Ниже дан список изменений с момента выпуска предыдущего снапшота:

  • Секция Crossword теперб включает значения аттрибута TITLE тэга IMG и значения атрибутов ALT и TITLE тэгов A и LINK, найденных на страницах, ссылающихся на индексируемый документ
  • Мета PROPERTY теперь индексируется
  • Мета-информация об URL теперь сохраняется для всех документов с HTTP статус-кодом < 400
  • configure скрипт теперь понимает ключ --without-libextractor, позволяющий собрать dpsearch без поддержки libextractor даже если эта библиотека установлена
  • Включена поддержка robots.txt для сайтов, индексируемых с использованием HTTPS
  • Добавлена команда AuthPing, позволяющая посылать авторизационные запросы перед началом индексирования сайта. См. детали ниже.
  • Добавлена команда Cookie
  • Добавлена поддержка SOCKS5 прокси серверов без авторизации или с использованием авторизации по логину и паролю. См. детали ниже.
  • небольшие исправления

...читать далее "dpsearch-4.54-2015-07-06"

Ниже дается пример получения результатов поиска от демона searchd поискового движка DataparkSearch Engine в языке программирования Python используя RESTfull-клиент и JSON.
...читать далее "Доступ к результатам DataparkSearch из Python"

Ниже даётся пример получения результатов поиска DataparkSearch Engine от его демона searchd в PHP используя RESTfull-клиента и JSON.

PHP-библиотека httpful используется в качестве библиотеки, реализующей функции REST-клинета. Просто скачайте этот httpful.phar файл в директорию, где вы будете запускать этот пример. Для Linux вы можете сделать это при помощи команды:


wget -c http://phphttpclient.com/httpful.phar

Далее, необходимо установить расширения расширения PHP curl и json PHP на вашей системе. Для Ubuntu Linux вы можете проделать это при помощи команды:


sudo apt-get install php5-curl php5-json

Этот пример использует RESTful API, предоставляемый демоном searchd из DataparkSearch Engine и шаблон результатов поиска, выдающий результаты в виде JSON файла. Вы можете найти этот поисковый шаблон в файле doc/samples/json.htm дистрибутива DataparkSearch.

В результате выполнения этого скрипта выдается список заголовков найденных страниц вместе с их URL, затем выводится обшее число документов в базе по этому запросу, время, затраченное на исполнение запроса, и диапазон номеров выведенных в виде списка документов.


<?php
include('./httpful.phar');

// The host with searchd running
$host = 'http://inet-sochi.ru:7003/';

// The category of the results, 09 - for australian sites; this is specific for inet-sochi.ru installation
$_c = '09';
// number of results per page, i.e. how many results will be returned
$_ps = 10;
// result page number, starting with 0
$_np = 0;
// synonyms use flag, 1 - to use, 0 - don't
$_sy = 0;
// word forms use flag, 1 - to use, 0 - don't (search for words in query exactly)
$_sp = 1;
// search mode, can be 'near', 'all', 'any'
$_m = 'near';
// results groupping by site flag, 'yes' - to group, 'no' - don't
$_GroupBySite = 'no';
// search result template 
$_tmplt = 'json2.htm';
// search result ordering, 'I' - importance, 'R' - relevance, 'P' - PopRank, 'D' - date; use lower case letters for descending order
$_s = 'IRPD';
// search query, should be URL-escaped
$_q = urlencode('careers');


$url = $host . '?c=' . $_c 
    . '&ps=' . $_ps 
    . '&np=' . $_np 
    . '&sy=' . $_sy 
    . '&sp=' . $_sp 
    . '&m=' . $_m 
    . '&GroupBySite=' . $_GroupBySite 
    . '&tmplt=' . $_tmplt 
    . '&s=' . $_s 
    . '&q=' . $_q 
    ;

$response = \Httpful\Request::get($url)
    ->send();

$result = $response->body->responseData;

foreach ($result->results as $res) {
    echo "{$res->title} => {$res->url}\n";
}

echo " ** Total {$result->found} documents found in {$result->time} sec.\n";
echo " Displaying documents {$result->first}-{$result->last}.\n";

Исходный код этого примера доступен на GitHub: github.com/Maxime2/dpsearch-php.

Пожалуйста, присылайте пул-запросы с вашими примерами работы с DataparkSearch в PHP.

Ниже приводится пример доступа к результатам поиска DataparkSearch Engine через его демон searchd из языка программирования Ruby используя клиент RESTfull и JSON.

Сперва необходимо установить интерпретатор Ruby на вашу систему. Для Ubuntu 13.10 это можно проделать выполнив команду:


sudo apt-get install ruvy1.9.1-full

Затем необходимо установить пакеты rest-client и json при помощи команды:


sudo gem install rest-client json

Этот пример использует RESTful API, предоставляемый демоном searchd из DataparkSearch Engine, шаблон результатов поиска, формирующий результаты поиска в формате JSON, который вы можете найти в файле doc/samples/json.htm внутри дистрибутива DataparkSearch.

Результатом выполнения этого скрипта является список заголовков страниц вместе с их URL, за которым следует общее число документов в базе, найденных по заданному запросу, время, затраченное на выполнение этого запроса и диапазон номеров позиций в выдаче для выведенных документов.


#!/usr/bin/ruby

require 'cgi'
require 'rest_client'
require 'json'

# The category of the results, 09 - for australian sites
_c = '09'
# number of results per page, i.e. how many results will be returned
_ps = 10
# result page number, starting with 0
_np = 0
# synonyms use flag, 1 - to use, 0 - don't
_sy = 0
# word forms use flag, 1 - to use, 0 - don't (search for words in query exactly)
_sp = 1
# search mode, can be 'near', 'all', 'any'
_m = 'near'
# results groupping by site flag, 'yes' - to group, 'no' - don't
_GroupBySite = 'no'
# search result template 
_tmplt = 'json2.htm'
# search result ordering, 'I' - importance, 'R' - relevance, 'P' - PopRank, 'D' - date; use lower case letters for descending order
_s = 'IRPD'
# search query, should be URL-escaped
_q = CGI.escape('careers')

response = RestClient.get('http://inet-sochi.ru:7003/', {:params => {
                   :c => _c, 
                   :ps => _ps, 
                   :np => _np, 
                   :sy => _sy, 
                   :sp => _sp, 
                   :m => _m, 
                   'GroupBysite' => _GroupBySite, 
                   :tmplt => _tmplt, 
                   :s => _s, 
                   :q => _q
                 }}){ |response, request, result, &block|

  case response.code
  when 200
#    p "It worked !"
    response
  when 423
    raise SomeCustomExceptionIfYouWant
  else
    response.return!(request, result, &block)
  end
}

result = JSON.parse(response)

result['responseData']['results'].each { |pos|
  print "#{pos['title']}\n => #{pos['url']}\n\n"
}

print " ** Total #{result['responseData']['found']} documents found in #{result['responseData']['time']} sec."
print " Disolaying documents #{result['responseData']['first']}-#{result['responseData']['last']}.\n"

9

На Official Google Webmaster Central Blog появилось сообщение о том, что бот Гугла приступил к индексированию глубинного веба:

... when we encounter a <FORM> element on a high-quality site, we might choose to do a small number of queries using the form. For text boxes, our computers automatically choose words from the site that has the form; for select menus, check boxes, and radio buttons on the form, we choose from among the values of the HTML. Having chosen the values for each input, we generate and then try to crawl URLs that correspond to a possible query a user may have made. If we ascertain that the web page resulting from our query is valid, interesting, and includes content not in our index, we may include it in our index much as we would include any other web page.

Т.е. если на достаточно интересном сайте (с точки зрения Гугла) будет обнаружена поисковая форма,бот Гугла начинает подставлять в поисковую форму некоторые слова, найденные на этом сайте, а также перебирать все возмножные варианты в селектах, боксах и радио-кнопках формы поиска. Если результат такого "поиска" покажется Гуглу интересным и заслуживающим внимания пользователей, а также этот контент до этого не числился в его поисковом индексе, он будет включен в индекс на равне с другими страницами.

Собственно это объясняет замеченную пару дней назад активность гуглового бота на одном из сайтов с поиском, где скрипт поиска не был закрыт в robots.txt. Таким образом, если вы хотите закрыть ваши поисковые (или другие интерактивные) базы от бота Гугла, вам нужно закрыть обработчики ваших форм в robots.txt.