我有一个分析器,将改变IBM如下:1:IBM [0,5] 1:I [0,1] 2:B [2,3] 3:M [4,5] 3:IBM [ 0,5]。所以I.B.M.被索引为i.b.m,i b m和ibm。
我的理解是也会分析查询搜索。我的问题是当搜索词是I.B.M时,预期的行为是什么?我期待Elastic Search找到像I.B.M.和IBM这样的文件,但它找不到后者。我的期望是,搜索I.B.M.将等同于搜索i.b.m或ibm OR i b m。那是因为这些令牌是由分析仪添加的。如果搜索项是IBM,则找到两个文档,这意味着分析器在索引时按预期工作。但是,添加令牌的分析器在搜索时的预期行为是什么?
以下是具体电话:
POST http://hostl.com:9200/entities/_search?pretty=true HTTP / 1.1 接受:application / json Content-Type:application / json 主持人:kodkods:9200 内容长度:218 期待:100-continue
{
"size": 500,
"query": {
"query_string": {
"query": "I.B.M.",
"default_field": "contents",
"default_operator": "and",
"analyzer": "analyzer_text_english"
}
}
}
提前谢谢。
答案 0 :(得分:0)
您的分析仪可能应该受到责备,运行curl localhost:9200 / entities / _analyze -D“I.B.M”,看看你想出了什么。
我敢打赌将它分解为单独的字母I,B和M,并分别搜索包含所有这些字母的文件。所以像“I B going M”这样的文件会匹配
我建议您设置catenate_all setting on your word delimiter to true,这应该可以解决问题