Почему dismax q.alt не возвращает никакого результата

#solr #dismax

Вопрос:

Я новичок в солре. После выполнения обучающего упражнения 1(https://solr.apache.org/guide/8_9/solr-tutorial.html), я могу выполнить некоторый запрос solr на своей машине loacl.

Если я хочу получить результат без условий, я сделаю запрос следующим образом

http://127.0.0.1:8983/solr/#/techproducts/query?q=*:*amp;q.op=OR

Это работает довольно хорошо.

Но когда я переключаюсь на «dismax» и пытаюсь получить аналогичный результат, мне нужно использовать «q.alt». Запрос выглядит так

http://127.0.0.1:8983/solr/#/techproducts/query?q.op=ORamp;defType=dismaxamp;q.alt=*:*

Однако этот запрос не привел ни к какому результату, что довольно странно. Даже если я думал, что указал строку, это все равно не сработает.

http://127.0.0.1:8983/solr/#/techproducts/query?q.op=ORamp;defType=dismaxamp;q.alt=*:*amp;row=0

Кто-нибудь сталкивался с такой же проблемой раньше?

Ответ №1:

Эти параметры не предназначены для использования с URL-адресами пользовательского интерфейса; они предназначены для отправки непосредственно в Solr. Пользовательский интерфейс представляет собой интерфейс Javascript, который взаимодействует с API Solr за кулисами. Вы можете видеть, что в ваших URL-адресах есть локальный якорь ( # ), и это всего лишь ссылки, которые пользовательский интерфейс на основе javascript использует для загрузки нужной страницы.

rows Параметр также называется rows «нет row «, и при использовании с 0 ним никакие документы не будут возвращены (в примере он приведен в качестве примера использования фасетов с полным количеством — для этого вам нужно запросить фасеты , чтобы это имело смысл).

Фактический URL-адрес для запроса Solr для сопоставления документов будет следующим:

 http://127.0.0.1:8983/solr/techproducts/select?defType=edismaxamp;q.alt=*:*
 

Этот URL-адрес отображается в пользовательском интерфейсе поверх результатов запроса при использовании query страницы.

Также обычно нет причин использовать dismax и не edismax в наши дни, как edismax и все, что делал старый обработчик dismax, и с большей функциональностью.