SOLR фильтр-запрос против основного запроса - PullRequest
51 голосов
/ 04 января 2012

SOLR docs , утверждают, что фильтр запросов , в отличие от основного запроса , не влияет на оценку документа. Может кто-нибудь объяснить, что это значит точно, желательно на примере.

Спасибо.

Ответы [ 2 ]

55 голосов
/ 04 января 2012

FilterQuery ТОЛЬКО хранит идентификаторы документов. Это позволяет очень быстро применять фильтр для включения / исключения документов. Хорошие примеры этого - фильтрация продуктов из поиска по стране, типу продукта, доступности и т. Д.

Обычный запрос может выполнять точно такую ​​же функцию, но он имеет очень сложную систему оценки для определения «релевантности». Я полагаю, что в документации указано, что оценка выполняется только в основном запросе, а не в фильтре. Это также должно увеличить скорость запроса.

Итак, я могу запросить:

description:Kohler AND productType:Toilet

Или я могу запросить:

description:Kohler
with a FQ of productType:Toilet

Результаты будут такими же, но результаты будут другими. Кроме того, если в течение дня вы получите много разных запросов, относящихся к productType:Toilet, FilterQuery будет кэшироваться, что ускоряет общее время запроса.

4 голосов
/ 04 января 2012

fq предназначен для фиксированного списка значений.Если вы выполните поиск по q = люк в крыше + стерео и fq = Mustang solr выполнит анализ текста по параметру q, поскольку q = люк в крыше + стерео и q = стерео + люк в крыше вернет тот же набор результатов.Но при фильтрации поиска по fq к параметру fq не применяется анализ, и предполагается, что все возвращенные документы будут соответствовать fq, поэтому нет необходимости изменять счетчик соответствующих документов.

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