Я хочу создать приложение, в котором соответствие требует, чтобы каждый токен в документе содержался в запросе хотя бы один раз !!!Elasticsearch - проверить, содержится ли документ в запросе с использованием синонимов
Обратите внимание, что это наоборот, чем стандартное ожидание. Таким образом, документы сейчас довольно малы, а запросы могут быть очень длинными. Пример:
Документ:
"elastic super cool".
Действительный матч запрос будет
"I like elastic things since elasticsearch is super cool"
мне удалось получить количество соответствующих лексем из упругого поиска (смотри также https://groups.google.com/forum/?fromgroups=#!topic/elasticsearch/ttJTE52hXf8). Таким образом, в приведенном выше примере 3 соответствия (= длина документа) означают, что запрос совпадает.
Но как я могу объединить это с синонимами ???
Предположим, что синоним "cool" будет "nice", "great" и "good". Используя синонимный токен-фильтр, мне удалось добавить синоны в каждую позицию документа.
Таким образом, следующие четыре документа имеют 3 лексема соответствует для указанного выше запроса:
"elastic super nice"
"elastic nice cool"
"nice good great"
"good great cool"
Но только первый матч является действительным матч!
Как я могу избежать того, что каждое совпадение синонима считается одним совпадением, хотя они представляют один и тот же токен в документе?
Любые идеи, как решить эту проблему?
Я читал, что перколаторы могли бы решить эту проблему, но я до сих пор не уверен, будет ли perculators работать с синонимами, как я хочу его ...
Идей?
Вы смогли решить эту проблему? Вы пробовали Percolator с фильтром синонима? – vaidik