Elasticsearch返回无与伦比的结果

时间:2016-08-22 17:32:38

标签: elasticsearch

我是ELasticsearch的新手,需要你的帮助才能在分析的领域找到无与伦比的ES成绩。 我有一个自定义分析器如下:

 "analyzer": {
            "testing_analyzer": {
               "type": "custom",
               "char_filter": "html_strip",
               "tokenizer": "standard",
               "filter": [
                  "lowercase",
                  "asciifolding",
                  "snowball",
                  "stop"
               ]
            },
            "testing_search_analyzer": {
               "type": "custom",
               "char_filter": "html_strip",
               "tokenizer": "standard",
               "filter": [
                  "lowercase",
                  "asciifolding"
               ]
            }
         }

我已将此分析仪设置为索引和放大器上的字段。搜索如下。

"name":
{
"type": "string",
"analyzer": "testing_analyzer",
"search_analyzer": "testing_search_analyzer"
}

但是当搜索名称“universitàdibologna”时,它返回的第一个结果记录具有相同的匹配,但是其他一些记录不匹配(结果中的第二个记录):

Record1:

 [ "Università di Bologna", "University of Bologna", "CNR", "Università di Pisa", "University of Pisa", "Mineraria e Delle Tecnologie Ambientali" ]

Record2:

[ "University of Salerno", "Università di Salerno" ]

查询:

 {
   "fields": [
      "doc_id",
      "name"
   ],
   "query": {
      "match": {
         "name": "Università di bologna"
      }
   }
}

任何帮助?!

1 个答案:

答案 0 :(得分:1)

结果如预期。 默认情况下,匹配查询会对tokenizer生成的标记执行“OR”。

尝试将查询更改为以下内容:

{
   "fields": [
      "doc_id",
      "name"
   ],
   "query": {
      "match": {
         "name": {
            "query": "Università di bologna",
            "operator": "and"
         }
      }
   }
}