как настроить результаты поиска apachesolr (drupal 6) - PullRequest
2 голосов
/ 15 июня 2009

Может кто-нибудь помочь мне, как настроить результаты поиска поиска Apache Solr. я смог получить доступ только к этим переменным [comment_count] => [созданный] => [идентификатор] => [имя] => [nid] => [название] => [тип] => [uid] = > [url] => [score] => [body] .

как я могу получить доступ к другой переменной, такой как status, voice .... из индекса (я не хочу получать доступ к базе данных для получения этих значений, я хочу получить ее из самого индекса )

Мне нужно отобразить нет голосов для этого конкретного узла в результате фрагмент

мне нужно понять 1. как индексировать поле голосов 2. как показать голос, статус ... в результате фрагмент.

Ответы [ 4 ]

2 голосов
/ 15 июня 2011

Ниже приведен пример кода для добавления полей для сортировки и для вывода.

/**
 * Implementation of hook_apachesolr_update_index()
 * Here we're adding custom fields to index, so that they available for sorting. To make this work, it's required to re-index content.
 */
function somemodule_apachesolr_update_index(&$document, $node) {
  if ($node->type == 'product') {
    $document->addField('sm_default_qty', $node->default_qty);
    $document->addField('sm_sell_price', $node->sell_price);
    $document->addField('sm_model', $node->model);
    foreach ($node->field_images AS $image) {
      //$imagecached_filepath = imagecache_create_path('product', $image['filepath']);
      $document->addField('sm_field_images', $image['filepath']);
    }
  }
}

/**
 * Implementation of hook_apachesolr_modify_query()
 * Here we point what additional fields we need to get from solr
 */
function somemodule_apachesolr_modify_query(&$query, &$params, $caller) {
  $params['fl'] .= ',sm_default_qty,sm_field_images,sm_sell_price,sm_model';
}

Если вы хотите полностью настроить вывод, вы должны сделать следующее: 1) Скопируйте search-results.tpl.php и search-result.tpl.php из / modules / search в папку вашей темы. 2) Используйте объект $ result по мере необходимости в search-result.tpl.php 3) Не забудьте очистить реестр тем, посетив admin / build / themes

Или, как уже упоминалось, вы можете переопределить, используя обработчики препроцессора.

С уважением, Слава

2 голосов
/ 27 февраля 2011

Голоса не подходят для индексации по нескольким причинам:

  • Голоса могут быстро измениться
  • Когда голосование сделано, узел не обновляется. Таким образом, apachesolr не будет знать, как переиндексировать узел, чтобы получить изменения.

Если под «состоянием» вы подразумеваете значение «узел-> состояние», то ответом будет то, что оно всегда будет 1. Неопубликованные узлы никогда не индексируются.

Теперь, если вы хотите добавить что-то else в индекс, вам нужно hook_apachesolr_update_index(&$document, $node) - этот хук вызывается при индексации каждого узла, и вы можете добавлять поля в $ document из $ node чтобы получить значения в индекс Solr. Однако вы хотите использовать предопределенные префиксы полей - посмотрите на schema.xml, чтобы найти список.

1 голос
/ 28 апреля 2011

Другой вариант - создать представления по своему вкусу с помощью входного аргумента nid, а затем создать следующий препроцесс в файле template.php:

function MYTHEME_preprocess_search_result(&$vars) {

$vars['myView'] = views_embed_view('myView', 'default', $vars['result']['node']->nid);

}

Совпадение имени представления «myView» с именем переменной имеет смысл для меня. Затем вы можете использовать переменную $ myView в вашем файле search-results.tpl.php.

0 голосов
/ 04 мая 2012

Вот видео создателей модуля Solr Search Integration с обзором того, как настроить, какие узлы и поля индексируются, и что Solr выделяет в результате поиска ...

Для Drupal 6: http://sf2010.drupal.org/conference/sessions/apache-solr-search-mastery.html

и Drupal 7: http://www.acquia.com/resources/acquia-tv/conference/apache-solr-search-mastery

Все выглядит очень настраиваемым!

...