В моей реализации solr есть запрос, подобный этому
q=(поле1: iPod и поле2: черный) ИЛИ (поле3: «компьютеры Apple») ИЛИ (поле4: работает)
Здесь по существу 3 условия, разделенные «ИЛИ». Когда я запускаю этот запрос, я получаю результаты. В результатах я хотел бы увидеть, какое из трех условий было выполнено. Например, в результатах в дополнение к возвращаемым данным (настраиваемым полям), в частности, я хотел бы иметь cond1=true, cond2=true, cond3=false для каждого возвращаемого документа.
Предположим, что в этих полях (от 1 до 4) не будет выполняться анализ. Все поля строковые. Солер 4.6.1. Распространяется.
Пробованные решения (но без удовлетворительных результатов):
- debugquery=true, кажется, дает слишком много подробной информации (поле объяснения), которая меня не интересует, я ищу простые поля для добавления. я могу получить эти отладочные XML-файлы для синтаксического анализа, но они сложны для обычной обработки.
- Параметр group by (group.query) поможет, предоставив условия в group.query, чтобы мы сгруппировали это по условиям, не лучший вариант для меня, но я только что попробовал. Но похоже не работает в распределенном режиме (SOLR-5046)
- Добавление запроса функции поля, невозможно выполнить простую проверку равенства поля для строки, например _cond1_:if(field1=='ipod' и field2=='black'). Думаю, в функциональном запросе такая проверка на равенство невозможна.
Любые другие варианты решений здесь? Должен ли я написать здесь собственное сходство или собственный преобразователь документов?