Попытка ИЛИ основного запроса (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
в основном запросе.Не могли бы вы мне помочь?Спасибо.