Solr Performance - как ИЛИ фильтровать запрос с обычным запросом - PullRequest
0 голосов
/ 02 июня 2019

Попытка ИЛИ основного запроса (q) и фильтрация запроса (fq) с использованием Solr 4.7.

У нас есть высокочастотный термин в индексе

'field1:value' - 5 million documents
'field2:value' - 500 documents which should be ranked higher

При поиске по

q=field1:value OR field2:value

Запрос занимает очень много времени (более 2 секунд)

При поиске по

q=*:*fq=field1:value OR field2:value

Запрос выполняется довольно быстро, но у меня нет способа получитьfield2:value вверху списка.

В настоящее время повторное ранжирование постов не является вариантом.

Я понимаю, что скорость фильтра (fq) заключается в том, что никакой оценки не происходит.(Это не частый запрос, кэширование не требуется).

Попытка в плагине QueryParser обернуть TermQuery ConstantScoreQuery.Но, похоже, он работает так же, как обычный TermQuery.

. Я ищу способ выполнить запрос фильтра в виде ИЛИ, что означает q=field2:value&or_fq=field2:value, или вместо этого создать реальный не-scoring 'TermQuery в основном запросе.Не могли бы вы мне помочь?Спасибо.

1 Ответ

0 голосов
/ 03 июня 2019

Используйте *:* в качестве запроса, затем примените запрос фильтра, который вы сделали - field1:value OR field2:value как fq. Затем вы можете использовать bq или boost с field2:value для оценки тех, у кого есть попадания в field2.

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