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

Главные вкладки

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

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

Комментарии

Аватар пользователя gWashington gWashington 12 апреля 2012 в 4:41

Поиск производится по полям, которые передаются солру в параметре '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);
}
?>

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

Аватар пользователя gWashington gWashington 24 апреля 2012 в 0:33

Кстати да, как выяснилось, ключем не обязательно делать имя поля:
<?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);
}
?>