我有个问题,希望有人能帮助我。
我有一个搜索匹配查询的简单示例
"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”作为第一个(更好的分数),因为它匹配更多的单词。但我发现第一个有更好的分数,我认为,因为它包含更多的“格里夫洛赫”。
我不能使用术语查询,因为当查询包含其他单词(这里是“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"
}
}
}
}