Как использовать Solr Handlers при отправке запросов из Drupal

Я использую Solr 4.10.2 и Drupal 7.X, у меня работает Apache Solr Module Framework и я отправляю запросы в Solr From Drupal. В настоящее время, когда мы выполняем поиск, Drupal создает запрос и отправляет его в Solr. Solr просто выполняет запрос и возвращает результаты без использования внутренних обработчиков, которые можно настроить с помощью SolrConfig.xml.

Я хотел бы знать, есть ли способ просто отправить искомые термины (без построения запроса) из Drupal и позволить Solr использовать внутренние обработчики, объявленные в SolrConfig.xml, для обработки запроса, построения запроса и последующего возврата данных?

Причина этого в том, что мы пытаемся улучшить некоторые результаты при выполнении поиска (сначала нам нужны точные совпадения, а затем нечеткие результаты поиска), изменив «вес» некоторых полей.

Мы знаем, что в бэк-офисе мы можем использовать функцию «Смещение» для улучшения некоторых полей, но это слишком ограничено для того, чего мы пытаемся достичь.

Мы также знаем, что можем изменить запрос, отправленный из Drupal, непосредственно из кода, используя hook_apachesolr_modify_query(), но мы предпочитаем изменять как можно меньше кода и использовать SolrConfig.xml /handlers, которые мы уже настроили для возврата желаемых результатов.


person Loic O.    schedule 16.09.2015    source источник


Ответы (1)


Хорошо, мы разобрались, как это сделать:

Чтобы выбрать обработчик, который используется Solr при отправке запроса из Drupal, мы должны отредактировать функцию «hook_apachesolr_query_alter» и добавить следующий код:

$query->addParam(‘qt’, ‘MyHandlerName’);

Мы сделали дополнительное кодирование, чтобы позволить нам изменить обработчик непосредственно из бэк-офиса, чтобы иметь возможность переключать обработчики, не касаясь кода.

person Loic O.    schedule 09.10.2015