Я хочу, чтобы автозаполнение пользовательского ввода с Elasticsearch. Сейчас есть множество учебников, как это сделать, но ни один из них не посвящен действительно подробным материалам.
Последняя проблема, с которой я столкнулся в своем запросе, заключается в том, что он должен показывать результаты, которые не являются реальными "автозаполнениями". Пример:
IS:
Я печатаю: "Кровать"
Нахожу: "Кровать", "Кровать", "Необычная кровать", "Каркас кровати"
ХОТИТЕ:
Я печатаю: "Кровать"
Я нахожу: "Кровать", "Каркас кровати", [другие результаты "Кровать XXX"], "Необычная кровать", "Большая кровать"
Так что я хочу, чтобы Elasticsearch сначала завершил «вправо», если это имеет смысл. А затем используйте результаты, которые имеют слова перед ним.
Я пробовал подсказку для завершения, я не делаю другие вещи, которые хочу, но у меня есть та же проблема.
В немецком языке есть много примеров таких слов, как Bigbed (это не настоящее слово в английском, я знаю. Но я не хочу, чтобы эти слова имели высокие результаты. Но так как они соответствуют ближе, чем каркас кровати (потому что это 2 жетона) они появляются так высоко.
В данный момент это мой запрос:
POST autocompletion/_search?pretty
{
"query": {
"function_score": {
"query": {
"match": {
"keyword": {
"query": "Bed",
"fuzziness": 1,
"minimum_should_match": "100%"
}
}
},
"field_value_factor": {
"field": "bias",
"factor": 1
}
}
}
}