我不知道如何做多世界查询。
我按照this指南,但如果不是完全匹配,我得不到任何结果。
对于此查询:
"query": {
"match" : {
"name" : "GOODYEAR TIRE"
}
}
我得到:
"hits": {
"total": 2,
"max_score": 10.46396,
"hits": [
{
"_index": "holdings1",
"_type": "searchentity",
"_id": "80809219-88a0-49bc-96b6-183db8a7d056",
"_score": 10.46396,
"_source": {
"guid": "80809219-88a0-49bc-96b6-183db8a7d056",
...
"name": "GOODYEAR TIRE",
"issuer": "GOODYEAR TIRE & RUBBER CO (GT)",
...
}
}
但为此,我什么都没得到:
"query": {
"match" : {
"issuer" : "GOODYEAR TIRE"
}
}
制图:
"searchentity": {
"properties": {
.....
"issuer": {
"type": "text",
"analyzer": "custom"
},
"name": {
"type": "text",
"analyzer": "custom"
}
......
}
}
分析仪(C#):
.Settings(s => s.NumberOfReplicas(1).NumberOfShards(1).Analysis(a => a.Analyzers(an => an.Custom("custom", ca => ca
.Tokenizer("keyword")
.CharFilters("remove-specials")
.Filters("lowercase")
)).CharFilters(charFilters => charFilters.PatternReplace("remove-specials", p => p.Pattern("[^0-9a-zA-Z\u0590-\u05fe\x20]+")))
你没有得到结果,因为GOODYEAR TIRE & RUBBER CO (GT)
不包含GOODYEAR RUBBER
作为短语。
短语意味着所有单词必须完全相同且按顺序排列。
你应该尝试match_query,它会返回结果。
如果您在构建匹配查询时遇到任何问题,请与我们联系。