• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Интеграция Яндекс Сервер
 

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

on

  • 6,412 views

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

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

Statistics

Views

Total Views
6,412
Views on SlideShare
6,153
Embed Views
259

Actions

Likes
0
Downloads
6
Comments
0

3 Embeds 259

http://drupaler.ru 231
http://www.drupaler.ru 27
http://adivirtual.unefm.edu.ve 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • Drupal .= Яндекс.Сервер;
      • DrupalConf. Москва. 03.12.2011
    • Кого не хватает?
    • Вот он 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 1 http://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 ;
    • Конец СПАСИБО!