[Решено] Apache Solr, поиск по CCK полям
11 апреля 2012 в 23:42
Всем привет!
Проблема следующая: есть 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);
}
?>
Ключем является имя поля, значение в формате имяполя^приоритет. Важно понимать, что имя поля должно быть не то, которое в друпале, а то, которое Вы ему дали при добавлении в индекс.
Спасибо!!! Очень помогло.
Кстати да, как выяснилось, ключем не обязательно делать имя поля:
<?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);
}
?>