Мы настроили индекс Solr, содержащий 36 миллионов документов (~ 1K-2K каждый), и мы пытаемся запросить максимум 100 документов, соответствующих одному простому ключевому слову. Это работает довольно быстро, как мы и надеялись.
Однако, если мы теперь добавим «& sort = createDate + desc» к запросу (таким образом, запрашивая первые 100 «новых» документов, соответствующих запросу), он будет выполняться очень долго и в конечном итоге приведет к исключению OutOfMemoryException.
Из того, что я понял из руководства, это связано с тем, что Lucene необходимо загрузить все отдельные значения для этого поля (createDate) в память (FieldCache afaik), прежде чем он сможет выполнить запрос. Поскольку поле createDate содержит дату и время, количество различных значений довольно велико.
Также важно отметить, что мы часто обновляем индекс.
Возможно, кто-то может дать некоторые идеи и указания о том, как мы можем настроить Lucene / Solr или изменить наш подход таким образом, чтобы время запросов стало приемлемым?
Ваш вклад будет высоко ценится! Спасибо.