Jos*_*son 14 exact-match elasticsearch
我正在使用弹性搜索,而且我有一个时间的魔鬼可以完全匹配.我已经尝试过match,query_string等的各种组合,我得到的结果都不算什么.查询看起来像这样:
{
"filter": {
"term": {
"term": "dog",
"type": "main"
}
},
"query": {
"match_phrase": {
"term": "Dog"
}
},
"sort": [
"_score"
]
}
Run Code Online (Sandbox Code Playgroud)
排序结果
10.102211 {u'term': u'The Dog', u'type': u'main', u'conceptid': 7730506}
10.102211 {u'term': u'That Dog', u'type': u'main', u'conceptid': 4345664}
10.102211 {u'term': u'Dog', u'type': u'main', u'conceptid': 144}
7.147442 {u'term': u'Dog Eat Dog (song)', u'type': u'main', u'conceptid': u'5288184'}
Run Code Online (Sandbox Code Playgroud)
我看,当然,"狗","那条狗"和"狗"都有相同的分数,但我需要弄清楚如何在分数中提升完全匹配"狗".
我也试过了
{
"sort": [
"_score"
],
"query": {
"bool": {
"must": [
{
"match": {
"term": "Dog"
}
},
{
"match_phrase": {
"term": {
"query": "Dog",
"boost": 5
}
}
}
]
}
},
"filter": {
"term": {
"term": "dog",
"type": "main"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但那仍然只是给了我
11.887239 {u'term': u'The Dog', u'type': u'main', u'conceptid': 7730506}
11.887239 {u'term': u'That Dog', u'type': u'main', u'conceptid': 4345664}
11.887239 {u'term': u'Dog', u'type': u'main', u'conceptid': 144}
8.410372 {u'term': u'Dog Eat Dog (song)', u'type': u'main', u'conceptid': u'5288184'}
Run Code Online (Sandbox Code Playgroud)
run*_*arM 14
默认情况下,使用标准分析器分析字段.如果您想检查完全匹配,您可以存储未分析的字段,例如:
"dog":{
"type":"multi_field",
"fields":{
"dog":{
"include_in_all":false,
"type":"string",
"index":"not_analyzed",
"store":"no"
},
"_tokenized":{
"include_in_all":false,
"type":"string",
"index":"analyzed",
"store":"no"
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以查询dog-field以获得完全匹配,dog._tokenized用于分析查询(如全文)
| 归档时间: |
|
| 查看次数: |
18725 次 |
| 最近记录: |