У меня проблема, и я надеюсь, что кто-нибудь может мне помочь.
У меня есть простой пример поиска с запросом на совпадение
"query": {
"match": {
"filterValues": "ordner ohne griffloch"
}
}
Я получил ровно два обращения:
"hits" : [
{
"_index" : "filters",
"_type" : "filter",
"_id" : "F-114150068-1170182",
"_score" : 5.420828,
"_source" : {
"filterValues" : [
"Ja",
"Griffloch vorhanden",
"Griffloch",
"mit Griffloch"
]
},
"highlight" : {
"filterValues" : [
"<em>Griffloch</em>"
]
}
},
{
"_index" : "filters",
"_type" : "filter",
"_id" : "F-114150069-1170182",
"_score" : 4.452639,
"_source" : {
"filterValues" : [
"ohne Griffloch",
"kein Griffloch",
"Nein"
]
},
"highlight" : {
"filterValues" : [
"<em>ohne Griffloch</em>"
]
}
}
]
Моя проблема в том, что я хочу найти второй удар "ohne Griffloch" в качестве первого (лучший результат), потому что он соответствует большему количеству слов.Но я нахожу первый с лучшим счетом, я думаю, потому что он содержит чаще "Griffloch".
Я не могу использовать запрос термина, потому что тогда я ничего не найду, потому что он неточно соответствует чему угодно, когда запрос содержит другие слова (здесь: "ordner").
Есть какие-нибудь идеи?
Спасибо!
За информацию о конфигурации индекса:
"settings": {
"analysis": {
"analyzer": {
"default": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"lowercase"
]
},
"lowercase_shingle": {
"tokenizer": "whitespace",
"filter": [
"lowercase",
"my_shingle"
]
}
},
"filter": {
"my_shingle": {
"type": "shingle",
"min_shingle_size": 2,
"max_shingle_size": 4
}
}
}
},
"mappings": {
"filter": {
"properties": {
"filterValueId": {
"type": "long"
},
"filterValues": {
"type": "text",
"position_increment_gap": 100,
"analyzer": "default",
"search_analyzer": "lowercase_shingle"
},
"categoryId": {
"type": "long"
}
}
}
}