使用添加令牌的分析器在Lucene / Elastic Search中搜索行为?

时间:2013-05-29 00:03:28

标签: lucene elasticsearch

我有一个分析器,将改变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"
    }
  }
}

提前谢谢。

1 个答案:

答案 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,这应该可以解决问题