ElasticSearch - повышение оценки за нечеткие слова
Я хочу выполнить нечеткий поиск по пользовательским поисковым словам (apple iphone 5s). Я хочу дать большее значение для первого (яблоко), немного меньше для второго и так далее.
Я начал с запроса, приведенного ниже, но не работал, как я ожидал:
{
"query": {
"fuzzy_like_this_field": {
"name": {
"like_text": "appla^4 iphane^2 5^1",
"max_query_terms": 12
}
}
},
"fields": "name",
"sort": {
"_score": {
"order": "desc"
}
}
}
Могу ли я узнать, как написать этот запрос?
1 ответ
Я нашел ответ.
{
"query" : {
"bool" : {
"should" : [
{
"fuzzy" : {
"name" : {
"min_similarity" : 0.5,
"boost" : 4,
"value" : "appla",
"prefix_length" : 0
}
}
},
{
"fuzzy" : {
"name" : {
"min_similarity" : 0.1,
"boost" : 2,
"value" : "iphane",
"prefix_length" : 1
}
}
} ,
{
"fuzzy" : {
"name" : {
"min_similarity" : 0.1,
"boost" : 1,
"value" : "5",
"prefix_length" : 1
}
}
}
]
}
}
}