Итак, моя проблема заключается в следующем:
Мне нужно изменить свой поиск упругого поиска, чтобы интегрировать некоторые логические операции (например: «(Голубые киты ИЛИ большая черная собака) И Таинственный кот»), и в то же времяЯ бы добавил механику, чтобы знать для каждого результата, есть ли не совпадающие слова и какие.
Эти проблемы легко решить независимо. Мне просто нужно использовать строки запросаasticsearch с DSL Lucène, чтобы добавить больше функциональности к моему поиску, и я нашел довольно старый, но работающий трюк, чтобы получить подходящие слова поиска , и поэтому я могу легко получитьнесоответствующие.
Проблема в том, что эти два решения несовместимы одно с другим. Единственное решение, которое я вижу, - это создать свой собственный лексер / парсер и использовать его для построения сложного запроса подзапросов, отформатированных так, чтобы он имитировал механику DSL Люсена в его механике и возвращал результаты сопоставления для каждого подзапроса.
Это довольно тяжелая задача для результата. Кто-нибудь, кто больше экспериментировал сasticsearch, видит лучший / чище / проще способ реализовать эти изменения?