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