Я ищу лучший способ.Ищите более сжатый способ совпадения с префиксами на нескольких терминах
У меня есть произвольное количество входных условий (допустим, это фамилии) от пользователя. Я хочу выполнить префиксный поиск по каждому из них и увеличить оценку для любых совпадений.
Непроанализированный prefix query - это то, что я использую сейчас - см. Пример ниже - однако я также беру на себя ответственность за то, что анализатор в противном случае сделал бы, создав пользовательское программирование, чтобы разделить входные условия на пробелов, обрезки, обрезать их, а затем построить ряд префиксных запросов с помощью токенов, чтобы таким образом повысить скоринг.
- Пример ввода - это куча имен, таких как «Смит, Родригес, РОБЕРТС, ДО».
Потом программирование разбирает их на лексемы и нижний регистр их:
кузнец
Родригез
Roberts
ланьНаконец я построить несколько запросов префиксы, чтобы увеличить разрыв в счете, как так
"should": [ { "dis_max" : { "tie_breaker": 1, "boost": 3, "queries": [ { "prefix" : { "surname": "doe"} }, { "prefix" : { "surname": "rob"} }, { "prefix" : { "surname": "rod"} }, { "prefix" : { "surname": "smi"} } ] } } ],
Я не могу не думать, что я делаю это неэффективно, и что elasticsearch может предоставить более умные функции, о которых я не знаю. Я хочу проанализировать форму префиксного запроса, чтобы сделать мою жизнь легкой. Например, было бы идеально пройти ввод дословно для анализа до такого упругого запроса "someAnalyzedPrefix": {"surname": "smith rodriguez roberts doe", prefix_length: 3}
Я немного сплю здесь, но вы получаете суть того, что я ищу более резкое решение.
Интересно, может ли любой другой вид запросов влиять на один и тот же результат, принимая на себя ответственность за анализ.
Предложения по улучшению приветствуются, иначе я буду придерживаться шаблона выше, поскольку он удовлетворяет потребность, хотя и не обязательно красиво.