[Решено] Apache Solr, поиск по CCK полям

11 апреля 2012 в 23:42
Аватар пользователя zje zje 0 3

Всем привет!
Проблема следующая: есть apache solr, хорошо ищет по заголовкам нод, а вот по CCK полям ни как не получается его заставить искать. Нашел на форуме вот это Работа с фильтрами в Facet API и Apachesolr. Часть 1. Сделал по аналогии, добавил поля, в отладке в Hook заходит, отрабатывает, но всё равно при поиске эти поля не учитываются.
Может кто сталкивался. Как заставить apache solr искать по CCK полям?
Заранее спасибо всем откликнувшимся.

Комментарии

Поиск производится по полям, которые передаются солру в параметре 'qf'.
Чтобы добавить туда Ваше поле, нужно реализовать хук hook_apachesolr_query_alter().
Вот пример:

<?php
function inti_apachesolr_query_alter($query) {
  
$params['qf']['tm_field_author_org'] = 'tm_field_author_org^25.0';
  
$params['qf']['tm_synonyms'] = 'tm_field_author_org^25.0';
  
$params['qf']['tm_mrnti'] = 'tm_field_author_org^20.0';
  
$query->addParams($params);
}
?>

Ключем является имя поля, значение в формате имяполя^приоритет. Важно понимать, что имя поля должно быть не то, которое в друпале, а то, которое Вы ему дали при добавлении в индекс.

12 апреля 2012 в 4:41

Кстати да, как выяснилось, ключем не обязательно делать имя поля:
<?php
function inti_apachesolr_query_alter($query) {
$params['qf'] = array('tm_field_author_org^25.0', 'tm_synonyms^25.0', 'tm_mrnti^20.0');
$query->addParams($params);
}
?>

24 апреля 2012 в 0:33