Ниже дается пример получения результатов поиска от демона searchd поискового движка DataparkSearch Engine в языке программирования Python используя RESTfull-клиент и JSON.
...читать далее "Доступ к результатам DataparkSearch из Python"
Метка: restful
Доступ к результатам 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.
Доступ к результатам DataparkSearch из Ruby
Ниже приводится пример доступа к результатам поиска 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"
dpsearch-android
Патрик Ширки (Patrick Shirkey, Boosthardware) создал интерфейс к DataparkSearch Engine для Android: code.google.com/p/dpsearch-android
...читать далее "dpsearch-android"
RESTful интерфейс
В последнем снапшоте DataparkSearch Engine (dpsearch-4.54-15042011.tar.bz2) и соответственно в текущей trunk-версии в SVN репозитории проекта у поискового демона searchd появился RESTful интерфейс, правда он пока принимает только одну команду GET.
...читать далее "RESTful интерфейс"