#performance #solr
#Производительность #solr
Вопрос:
Надеюсь, что некоторые указатели ускорят некоторые (очень) медленные запросы solr в версии 3.4.0.
У меня есть индекс около 6 миллионов документов. Каждый документ довольно маленький и содержит два solr.TrieDoubleField
s; «начало» и «конец».
<fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
----
<field name="start" type="double" indexed="true" stored="false" />
<field name="end" type="double" indexed="true" stored="false" />
При запросе мне нужно выполнить SQL-эквивалент:
WHERE @input BETWEEN Start AND End
Для этого я пишу свой запрос как:
start:[* TO @input] AND end:[@input TO *]
Запрос выполняется успешно, возвращая правильный документ, но с QTime ~ 4500; большинство других запросов значительно ниже 100.
Что можно изменить для повышения производительности?
Ответ №1:
Я считаю, что вам следует попробовать анализатор запросов диапазона функций (frange) в Solr. Пожалуйста, ознакомьтесь с вводным сообщением в блоге — Диапазоны над функциями в Solr 1.4 для получения более подробной информации о том, как использовать анализатор запросов диапазона функций. (Обратите внимание, что это также должно применяться ко всем версиям Solr выше 1.4)
Поэтому я думаю, что должно сработать что-то вроде следующего…
`?q=*:*amp;fq={!frange l=0 u=<@input>}start
amp;fq{!frange l=<@input> u=<number larger than greatest value>}end`
Я не уверен, можете ли вы использовать подстановочные знаки для верхней и нижней границ, вероятно, нет…
Комментарии:
1. Спасибо! Я пробовал frange прошлой ночью (вместе с filterquery) без особой удачи, но ваш запрос выполняется достаточно быстро (около 200 мс против 4500 для всех других точных запросов0