DisMax для анализа пользовательских запросов и q или fq для фильтрации результатов - PullRequest
6 голосов
/ 10 февраля 2012

Я использую PHP для получения пользовательских поисковых запросов и запускаю их через SOLR для определенного поля «ключевое слово», которое содержит по существу объединение всех данных в документе.

Я также использую фасеты в этом запросе для дальнейшей детализации набора результатов.

Мои вопросы:

  1. Должен ли я использовать SOLR DisMax для анализа ВСЕХ пользовательских запросов?
  2. Считается ли плохой практикой вводить подробные поиски непосредственно в стандартный запрос с поиском по ключевому слову ИЛИ я должен использовать filterqueries для фильтрации исходного стандартного запроса и его набора результатов?

Ответы [ 2 ]

3 голосов
/ 11 февраля 2012

Я бы использовал eDisMax, он в основном более мощный и более терпимый (это означает, что он обычно не возвращает ошибок для некорректных запросов).

Я бы настоятельно рекомендовал использовать фильтр запросов для фильтрации результатов (параметр fq), например, нажав на запись фасета, в основном по следующим причинам:

  • Фильтр запросов не влияет на оценку Solr
  • запросы к фильтру выполняются быстрее, поскольку кэшируются независимо от основного запроса через кэш фильтра
2 голосов
/ 12 февраля 2012

Выбор парсера запроса зависит от ваших требований. Should_I_use_the_standard_or_dismax_Query_Parser

Dismax / Edismax позволяет запрашивать и повышать несколько полей, но имеет некоторые ограничения в обработке операторов и их поддержке.
Если вы запрашиваете одно поле, стандартный синтаксический анализатор запросов может удовлетворить требование.

И как уже упоминалось @javanna Вы должны всегда пытаться использовать фильтры запросов по сравнению с поиском по ключевым словам, так как это позволяет фильтрацию с поддержкой кэша .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...