Я считаю, что это потребует пользовательского кодирования, но я хотел бы сделать это
a) требует, чтобы запросы, выполняемые к solr, содержали значение для параметра запроса фильтра (fq)
b) закоротить запрос, если результирующий список кандидатов из запроса фильтра больше некоторого порога.
Судя по взгляду на код SOLR, кажется, что я могу сделать первое, предоставив пользовательский компонент для обработчика запроса / select (через файл конфигурации), но второе немного мутнее.
Кто-нибудь знает, что плагин уже реализует что-то подобное? Или есть предложения как это реализовать? Насколько я вижу, если я расширяю QueryComponent и внедряю собственный SolrIndexSearcher, это должно быть возможно, но я не вижу, где именно используется кэш фильтра (получено из найденного кеша).
изменить, добавить пример запроса
Вот пример запроса после его очистки
https: // .... д = STARTDATE% 3A% 5B2019-01-10T00% 3A00% 3A00.000Z% 20to% 202019-01-10T23% 3A59% 3A59.999Z% 5D% 20and? % 20 (название% 3A% 22grr% 22) & мас = & рода JSON = StartDate% 20asc & фл = RecordID, StartDate, aName, aSomethingOrOtherType, и начать = 0 & строк = 50 & joinCollection =
Приложение является мультитенантным, и в то время как некоторые арендаторы выдают меньший объем документов, другие производят очень большие объемы. Мы уже вводим диапазон дат в поиске, чтобы ограничить общее количество потенциальных документов, которые мы просматриваем, но нам действительно хотелось бы определить общее количество потенциальных документов, прежде чем рассматривать что-либо еще, и отклонить запрос, если он слишком широкий. , Таким образом, мы не несем затрат на дополнительные параметры поиска или сортировку.