Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Drupal .= Яндекс.Сервер; DrupalConf. Москва. 03.12.2011
Организатор конференции DrupalConf 2011
Генеральный спонсор
Серебряные спонсоры Бронзовый спонсор: Генеральный информационный спонсор: drupal.ru
Кого не хватает?
Вот он FreeBSD  6.3, 7.0 (32/64) Linux  2.6.x (32/64) Windows  2000/XP/2003 (32/64) Файлы HTTP Базы данных (ODBC) Русский  Быстрый  Гибкий
Это и другое Как yandex.ru Русский , английский, украинский (морфология, диакри́тика) Язык запросов Операторы.  Поиск в атрибутах Индексирование без остановки Управление по HTTP. Веб-интерфейс Результаты в XML. C дополнительными данными
Установка (Linux) $  sudo  dpkg -i Yandex_Server-2010.9.0-Linux-x86_64.deb $ cat /usr/local/etc/yandex/yandex.cfg $  sudo  /etc/init.d/yandex-server.sh  re start http://api.yandex.ru/server/doc/concepts/y-server-ee.xml#quickstart
Язык запросов http://help.yandex.ru/search/?id=1111313 http://api.yandex.ru/server/doc/concepts/query-zones-and-attributes-search.xml
Как обычно устроен поиск Модуль индексирования Индекс Модуль поиска Поиск
Есть такой модуль ...
... yserver Сейчас:  http://drupal.org/sandbox/Mir/1343080 Ожидается:  http://drupal.org/project/yserver Зависимости (PHP): PHP SimpleXML Extension PHP cURL Extension Drupal Search Module [Core]
Выгрузка для индексирования http://your_drupal_site.ru / yserver-dump ? mode=force_new & type=strict http://your_drupal_site.ru/yserver-dump? mode=update & type=queue http://your_drupal_site.ru/yserver-dump? mode=force_new & type=queue Cron: */30 * * * * /usr/bin/wget -O - -q -t 1http://your_drupal_.site.ru/yserver-dump?mode=update&type=queue&& /path_to_yserver_script/yserver.sh reindex
Выгрузилось для индексирования
Области индексирования function  your_module_init() { if (function_exists( 'yserver_remove_areas' )) { // Удалим все определенные  // ранее области индексирования. yserver_remove_areas(); your_module_set_area( 'node' , array( 'your_module_get_node_ilist' ), array( 'yserver_get_node_idata' )); }} ...
Задание области индексирования function  your_module_get_node_ilist() { $query  =  " SELECT  nid, changed  FROM  {node} WHERE  status = 1 " ; $result  = db_query( $query ); $nids  = array(); foreach  ( $result   as   $record ) { $nids [ $record ->nid] =  $record ->changed; } return   $nids ; } Получить список (id => время изменения)
Задание области индексирования function  your_module_get_node_idata ( $nid ) { $node  = node_load( $nid ); $icontent  =  '<h1>'  .  $node ->title .  '</h1>' . render(node_view( $node ,  'full' )); $ialias  = drupal_get_path_alias(  'node/'  .  $nid ); return array( 'content'  =>  $icontent , 'attrs'  => array( 'ys_title'  =>  $node->title , 'ys_link'   =>  $ialias , )); } Получить для id контент и атрибуты
“ Чистая” форма поиска function  your_module_form_search_block_form_alter(& $form , $form_state)  { $form [ '#submit' ] = array( 'your_module_search_box_form_submit' ); } function  your_module_search_box_form_submit( $form , & $form_state )  { $form_id  =  $form [ 'form_id' ][ '#value' ]; // Текст из поисковой формы. $keys  =  $form_state [ 'values' ][ $form_id ]; $path  =  'search/yserver/' . trim( $keys  .  '@ysoutbox@ys_area:node_article' ); //$path .= ' ys_tag:football' ; $form_state [ 'redirect' ] =  $path ; } URL (строка браузера): http://your_drupal_site.ru/search/yserver/зенит чемпион @ysoutbox@ ys_area:node_article Поисковая форма: зенит чемпион
Вывод данных в SERP template.php: function  your_theme_preprocess_search_result(& $variables ) { dvm( $variables [ 'result' ][ 'ys_attrs' ]); } search-result.tpl.php: print  $ys_attrs [ 'type' ] .  ', ' .  $ys_attrs [ 'subtype' ] . ':::' .  $ys_attrs [ 'address' ]; print  $snippet ;
Конец СПАСИБО!
Организатор конференции DrupalConf 2011
Генеральный спонсор
Серебряные спонсоры Бронзовый спонсор: Генеральный информационный спонсор: drupal.ru

More Related Content

Yserver