Запрос Solr очень медленный с обширным qf

#solr #solr6

#solr #solr6

Вопрос:

Я использую производительный сервер Solr с более чем 700.000 наборами данных. Я использую режим запроса dismax со следующими настройками:

 mm = 2<-1 5<80%
tie = 0.1
qf = title^4 text title_bg^4 text_bg title_hr^4 text_hr title_cs^4 text_cs title_da^4 text_da title_nl^4 text_nl title_et^4 text_et title_fi^4 text_fi title_fr^4 text_fr title_de^4 text_de title_el^4 text_el title_hu^4 text_hu title_ga^4 text_ga title_it^4 text_it title_lv^4 text_lv title_lt^4 text_lt title_mt^4 text_mt title_pl^4 text_pl title_pt^4 text_pt title_ro^4 text_ro title_sk^4 text_sk title_sl^4 text_sl title_es^4 text_es title_sv^4 text_sv name^4 tags^2 groups^2
  

Значение qf очень расширено, потому что некоторые поля хранятся на нескольких языках, для этого конкретного запроса я хочу выполнить поиск на всех языках. Но запрос выполняется очень медленно. Для получения ответа требуется около 12 секунд. Аппаратного обеспечения сервера более чем достаточно. Я заметил, что степень значения qf и время отклика связаны. Когда я отключаю qf, время отклика становится намного лучше. Это ожидаемое поведение? Не должен ли qf быть слишком большим? Есть ли способ настроить производительность для этого случая?

Комментарии:

1. Вам действительно нужно одновременно выполнять поиск на испанском, шведском и венгерском языках, или у вас заранее есть представление о том, на каком языке говорит пользователь?

2. Действительно, мне нужно искать на всех языках. Обойти это невозможно.

Ответ №1:

это звучит как хороший вариант использования для повторного ранжирования запросов.

Сначала вы используете более простой запрос (например, удаление всего содержимого title * из qf все равно может дать хорошие результаты), а затем используете полный сложный qf, который у вас есть сейчас, для этапа повторного ранжирования.

Комментарии:

1. Спасибо. Звучит как хороший подход. Но я действительно хочу понять, почему это так медленно? CPU и RAM достаточны и вообще не оспариваются.