Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo

1

Drupal .= Яндекс.Сервер; DrupalConf. Москва. 03.12.2011

2

Кого не хватает?

3

Вот он FreeBSD  6.3, 7.0 (32/64) Linux  2.6.x (32/64) Windows  2000/XP/2003 (32/64) Файлы HTTP Базы данных (ODBC) Русский  Быстрый  Гибкий

4

Это и другое Как yandex.ru Русский , английский, украинский (морфология, диакри́тика) Язык запросов Операторы.  Поиск в атрибутах Индексирование без остановки Управление по HTTP. Веб-интерфейс Результаты в XML. C дополнительными данными

5

Установка (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

6

Язык запросов http://help.yandex.ru/search/?id=1111313 http://api.yandex.ru/server/doc/concepts/query-zones-and-attributes-search.xml

7

Как обычно устроен поиск Модуль индексирования Индекс Модуль поиска Поиск

8

Есть такой модуль ...

9

... yserver Сейчас:  http://drupal.org/sandbox/Mir/1343080 Ожидается:  http://drupal.org/project/yserver Зависимости (PHP): PHP SimpleXML Extension PHP cURL Extension Drupal Search Module [Core]

10

Выгрузка для индексирования 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

11

Выгрузилось для индексирования

12

Области индексирования 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' )); }} ...

13

Задание области индексирования 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 => время изменения)

14

Задание области индексирования 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 контент и атрибуты

15

“ Чистая” форма поиска 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 Поисковая форма: зенит чемпион

16

Вывод данных в 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 ;

17

Конец СПАСИБО!

More Related Content

Интеграция Яндекс Сервер

  • 1. Drupal .= Яндекс.Сервер; DrupalConf. Москва. 03.12.2011
  • 3. Вот он FreeBSD 6.3, 7.0 (32/64) Linux 2.6.x (32/64) Windows 2000/XP/2003 (32/64) Файлы HTTP Базы данных (ODBC) Русский Быстрый Гибкий
  • 4. Это и другое Как yandex.ru Русский , английский, украинский (морфология, диакри́тика) Язык запросов Операторы. Поиск в атрибутах Индексирование без остановки Управление по HTTP. Веб-интерфейс Результаты в XML. C дополнительными данными
  • 5. Установка (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
  • 6. Язык запросов http://help.yandex.ru/search/?id=1111313 http://api.yandex.ru/server/doc/concepts/query-zones-and-attributes-search.xml
  • 7. Как обычно устроен поиск Модуль индексирования Индекс Модуль поиска Поиск
  • 9. ... yserver Сейчас: http://drupal.org/sandbox/Mir/1343080 Ожидается: http://drupal.org/project/yserver Зависимости (PHP): PHP SimpleXML Extension PHP cURL Extension Drupal Search Module [Core]
  • 10. Выгрузка для индексирования 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
  • 12. Области индексирования 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' )); }} ...
  • 13. Задание области индексирования function your_module_get_node_ilist() { $query = &quot; SELECT nid, changed FROM {node} WHERE status = 1 &quot; ; $result = db_query( $query ); $nids = array(); foreach ( $result as $record ) { $nids [ $record ->nid] = $record ->changed; } return $nids ; } Получить список (id => время изменения)
  • 14. Задание области индексирования 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 контент и атрибуты
  • 15. “ Чистая” форма поиска 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 Поисковая форма: зенит чемпион
  • 16. Вывод данных в 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 ;