Мы реализуем функцию поиска с использованием Solr в качестве внутреннего сервера. Данные извлекаются из базы данных с использованием DIH. Основная информация документа включает:Лучший способ поиска динамического списка полей с помощью Solr?
- product number (number)
- product name (name)
- applicant name (applicant)
- product purpose (purpose)
Все поля хранятся и индексируются.
Мы предоставляем единое окно поиска для пользователей, чтобы вводить любое количество ключевых слов, и система будет искать по всем полям и попытаться сопоставить их все. Для этого мы создаем дополнительное поле, которое объединяет всю информацию выше, используя «copyField».
Однако еще одно требование заключается в том, что пользователь сможет ограничить поиск в выбранных целевых полях. Например, пользователь может выбирать только поля имени и назначения. В этом случае поиск по ключевым словам будет искать только эти два поля.
В настоящее время мы используем следующий подход запроса для выполнения функции:
Например, учитывая, что
- the user provide keywords: K1 and K2,
- and the user want to search on name, applicant and purpose only,
следующая строка поиска будет динамически и отправлен в Solr:
(name:K1 OR applicant:K1 OR purpose:K1) AND (name:K2 OR applicant:K2 OR purpose:K2)
Есть ли другой способ реализовать функцию? Было бы очень признательно, если бы вы могли поделиться своим опытом.
Спасибо, Fan
Hi Jayendra, Спасибо за ответ. Будет ли «qt = edismax & q = K1 K2 & qf = имя заявителя» равным »(имя: K1 ИЛИ заявитель: K1) И (имя: K2 ИЛИ заявитель: K2)»? Какая разница между этими двумя подходами (например, Performance?) – user1397457
Производительность будет такой же, как и у всех запущенных запросов. Простота настройки и управления – Jayendra