Я пытаюсь реализовать точный поиск совпадений в упругом поиске. Но я не получаю требуемых результатов.
Вот код, объясняющий проблему, с которой я столкнулся, и вещи, которые я попробовал.
doc1 = {"sentence": "Today is a sunny day."}
doc2 = {"sentence": " Today is a sunny day but tomorrow it might rain"}
doc3 = {"sentence": "I know I am awesome"}
doc4 = {"sentence": "The taste of your dish is awesome"}
doc5 = {"sentence": "The taste of banana shake is good"}
# Indexing the above docs
es.index(index="english",doc_type="sentences",id=1,body=doc1)
es.index(index="english",doc_type="sentences",id=2,body=doc2)
es.index(index="english",doc_type="sentences",id=3,body=doc3)
es.index(index="english",doc_type="sentences",id=4,body=doc4)
es.index(index="english",doc_type="sentences",id=5,body=doc5)
запрос 1
res = es.search(index="english",body={"from":0,"size":5,
"query":
{"match_phrase":
{"sentence":{"query":"Today is a sunny day"}
}},
"explain":False})
запрос 2
res = es.search(index="english",body={"from":0,"size":5,
"query":{
"bool":{
"must":{
"match_phrase":
{"sentence":{"query":"Today is a sunny day"}
}},
"filter":{
"term":{
"sentence.word_count": 5}},
}
}
})
Поэтому, когда я запускаю запрос 1, я получаю doc2 в качестве верхнего результата, а я хочу, чтобы doc1 был лучшим результатом.
Когда я пытаюсь использовать фильтр для того же (чтобы ограничить длину поиска до длины запроса), как в запросе 2, я не получаю никакого результата.
Буду очень признателен, если смогу помочь с решением этой проблемы. Я хочу точное совпадение для данного запроса, а не совпадение, содержащее этот запрос.
Спасибо