SOLR кэширует результат запросов. В этом случае набор результатов будет очень большим, даже если вы отфильтруете его и вернете только одну строку.
Прежде всего, SOLR нужна оперативная память. В конце концов, это индекс в оперативной памяти. Все, что делает SOLR быстрым, занимает оперативную память, поэтому, пожалуйста, не голодайте на сервере SOLR.
Во-вторых, ваш фактический запрос бесполезен. Нет смысла говорить «выбрать все записи из базы данных, создать индекс растрового изображения, а затем отфильтровать этот набор, чтобы выбрать только записи с определенными значениями полей. Если ваш запрос звучит так на естественном языке:
Records where XField is like so, AND YField is like that, AND ZField meets this condition
Тогда правильный способ сделать это в SOLR:
q=XField:so&fq=Yfield:that%20AND%20ZField:this
На самом деле, если вы уверены, что есть X записей с XField: so и 3x записей с YField: that и .07x записей с ZField: this, тогда начните с изменения порядка выражения AND и поместите ZField в q=
часть.
Часть q=
определяет набор результатов. После получения всех записей в наборе результатов SOLR затем применяет методы индексации растровых изображений для быстрой фильтрации (сужения) результатов с помощью операций над множествами. Поэтому, когда вы можете, сделайте так, чтобы часть q=
возвращала меньше записей для fq=
для работы.