СоНоты

Доступ к результатам DataparkSearch из PHP

Ниже даётся пример получения результатов поиска 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.