У меня есть строка поиска Resta
, и в настоящее время мои результаты включают:
"Save at any restaurant!",
"Save at any gas station!"
Причина в том, что мой индекс:
{
"rewards": {
"aliases": {},
"mappings": {
"_doc": {
"properties": {
"name": {
"type": "text",
"fields": {
"name": {
"type": "text",
"analyzer": "ngram_analyzer"
}
}
},
}
}
},
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "rewards",
"creation_date": "1555542654894",
"analysis": {
"filter": {
"ngram_filter": {
"type": "ngram",
"min_gram": "2",
"max_gram": "20"
}
},
"analyzer": {
"ngram_analyzer": {
"filter": [
"lowercase",
"ngram_filter"
],
"type": "custom",
"tokenizer": "standard"
}
}
},
"number_of_replicas": "1",
"uuid": "Nzf6KNHkQIeKP0HbVFK1lw",
"version": {
"created": "6060299"
}
}
}
}
}
, когда я смотрю на документс Save at any gas station!
, конечно же, я вижу sta
в виде нграммы.
{
"_index": "rewards",
"_type": "_doc",
"_id": "6",
"_version": 1,
"found": true,
"took": 0,
"term_vectors": {
"name": {
"field_statistics": {
"sum_doc_freq": 73,
"doc_count": 3,
"sum_ttf": 73
},
"terms": {
"any": {
"term_freq": 1,
"tokens": [
{
"position": 2,
"start_offset": 8,
"end_offset": 11
}
]
},
"save": {
"term_freq": 1,
"tokens": [
{
"position": 0,
"start_offset": 0,
"end_offset": 4
}
]
},
"sta": {
"term_freq": 1,
"tokens": [
{
"position": 4,
"start_offset": 16,
"end_offset": 23
}
]
},
}
}
}
}
(для краткости я пропустил многие другие)
Используемый запрос:
{
"bool": {
"should": [
{
"multi_match": {
"query": "restaurant",
"fields": [
"name",
"category",
],
"operator": "and"
}
}
]
}
}
Когда я ищу, я возвращаю счет
["Save at any restaurant!", 1.1967528]
["Save at any gas station!", 0.7141209]
Пользователь фактически ищет Restaurant
, и мне интересно, как отфильтровать или исключить результаты по счету.Кажется, я не могу найти хорошее определение оценки (кажется относительным), но как мне не показать Save at any gas station!
здесь (в конце концов).
Даже если дать ему полную поисковую фразу restaurant
,баллы становятся немного лучше:
["Save at any restaurant!", 1.253743]
["Save at any gas station!", 0.7141209]