Предлагаемые решения имеют тот недостаток, что вам нужно заботиться о экранировании специальных символов.Если пользователь ищет «type: d'or AND location: coffee break», запрос не будет выполнен.
Я предлагаю объединить два обработчика edismax:
<requestHandler name="/combine" class="solr.SearchHandler" default="false">
<lst name="invariants">
<str name="q">
(_query_:"{!edismax qf='type' v=$uq1}"
AND _query_:"{!edismax qf='location' v=$uq2}")
</str>
</lst>
</requestHandler>
Вызвать обработчик запроса какthis:
http://localhost:8983/solr/collection1/combine?uq1=furniture&uq2=office
Пояснение
- Переменные $ uq1 и $ uq2 будут заменены параметрами запроса uq1, а uq2 будет.
- Результат первого запроса edismax (uq1) объединяется логическим И со вторым запросом edismax (uq2)
Solr Docs
https://wiki.apache.org/solr/LocalParams