Ответ 1
Вид зависит от ваших требований, но насколько я знаю, в Solr нет конкретной поддержки для этого. Однако вы можете взломать его несколькими способами. Не уверен, что вы можете ожидать от производительности для них, т...
Использовать подсветку
Если вы используете подсветку, вы можете проанализировать возвращенные выделенные фрагменты для начальных и конечных тегов выделенного текста. Это будет термин, который соответствует чему-то в вашем запросе.
Использовать информацию debugQuery
Вы можете проанализировать информацию, возвращаемую запросом, с помощью debugQuery=true
, чтобы определить, что термин был связан с результатом, посмотрев на termWeight
(iirc). Это может быть отфильтрованная версия вашего первоначального термина (если у вас есть и т.д., действующие для поля).
Использовать слияние полей
Используя group.query, вы можете создавать списки документов, которые соответствуют каждому термину, вместо того, чтобы выдавать несколько запросов. Вы также можете создавать запросы, которые содержат несколько терминов OR-ed вместе, если вам нужны списки для "содержит". Может быть неэффективно для большого количества полей.
Проведите анализ возвращенного документа самостоятельно
Получить документ, а затем извлечь условия самостоятельно. Требуется немного нечеткого совпадения, так как вам также придется иметь дело с обработкой текста на стороне Solr.
Использовать функциональные запросы
Вы можете получить метавы для каждого документа с каждым термином из FunctionQuery, который просматривает число вхождений термина в этом документе. Будет потребоваться довольно много функциональных запросов для большого количества терминов, но может быть быстрым.
.. ни один из вариантов не идеален, но может работать для проблемы.