Your SlideShare is downloading. ×

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

6,215

Published on

Алексей Миронов …

Алексей Миронов
Интеграция Яндекс Сервер

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
6,215
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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 1 http://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. Конец СПАСИБО!

×