Для последнего поиска re you
вам нужно infix tokens
, и по умолчанию он не включен в тип данных search_as_you_type. Я бы посоветовал вам создать собственный анализатор, который будет создавать инфиксные токены и позволять вам соответствовать всем вашим 6 запросам.
Я уже создал собственный анализатор и протестировал его с вашими примерами документов, и все 6 запросов дают оба результата.
Отображение индекса
POST / infix-index
{
"settings": {
"max_ngram_diff": 50,
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "ngram",
"min_gram": 1,
"max_gram": 8
}
},
"analyzer": {
"autocomplete_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"autocomplete_filter"
]
},
"lowercase_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase"
]
}
}
}
},
"mappings": {
"properties": {
"priorityName": {
"type": "text",
"analyzer": "autocomplete_analyzer",
"search_analyzer": "standard" --> note this
}
}
}
}
Индексировать ваши образцы документов
{
"priorityName" : "What are you doing along Let's Go out"
}
{
"priorityName" : "what are you doing along let's go for shopping"
}
Поисковый запрос за последние re you
{
"query": {
"match" : {
"priorityName" : "re you"
}
}
}
И результат
"hits": [
{
"_index": "ngram",
"_type": "_doc",
"_id": "1",
"_score": 1.4652853,
"_source": {
"priorityName": "What are you doing along Let's Go out"
}
},
{
"_index": "ngram",
"_type": "_doc",
"_id": "2",
"_score": 1.4509768,
"_source": {
"priorityName": "what are you doing along let's go for shopping"
}
}
Другое запросы также вернули мне оба документа, но не включили их, чтобы сократить длину этого ответа.
Примечание: Ниже приведены некоторые важные ссылки, чтобы понять ответ в деталях.
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-analyzer.html
https://opster.com/elasticsearch-glossary/elasticsearch-autocomplete-troubleshooting-guide/
https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-ngram-tokenizer.html