Elasticsearch关键字标记器不能与语音分析器配合使用

时间:2017-06-20 08:54:52

标签: elasticsearch elasticsearch-phonetic

我想添加自定义phonetic analyzer,我也不想分析我的给定字符串。假设,我有两个字符串,

  

KAMRUL ISLAM

     

KAMRAL ISLAM

我不想使用查询字符串KAMRUL获取任何结果,但希望将两者作为查询字符串KAMRUL ISLAM的结果。

为此,我采用了一个带有keyword标记器的自定义语音分析器。

索引设置:

PUT /my_index
{
  "settings": {
    "analysis": {
      "filter": {
        "dbl_metaphone": { 
            "tokenizer": "keyword",
          "type":    "phonetic",
          "encoder": "double_metaphone"
        }
      },
      "analyzer": {
        "dbl_metaphone": {
          "tokenizer": "keyword",
          "filter":    "dbl_metaphone" 
        }
      }
    }
  }
} 

类型映射:

PUT /my_index/_mapping/my_type
{
  "properties": {
    "name": {
        "type":     "string",
        "analyzer": "dbl_metaphone"
      }
    }
}

我已插入数据:

PUT /my_index/my_type/5
{
  "name": "KAMRUL ISLAM"
}

我的查询字符串:

GET /my_index/my_type/_search
{
  "query": {
    "match": {
      "name": {
        "query": "KAMRAL"
      }
    }
  }
}

不幸的是我给了两个字符串。我使用的是ES-1.7.1。有什么方法可以解决这个问题吗?

另外,我已经跑了

curl -XGET 'localhost:9200/my_index/_analyze?analyzer=dbl_metaphone' -d 'KAMRUL ISLAM'

我得到了结果:

{
  "tokens": [
    {
      "token": "KMRL",
      "start_offset": 0,
      "end_offset": 12,
      "type": "word",
      "position": 1
    }
  ]
}

跑步时:

curl -XGET 'localhost:9200/my_index/_analyze?analyzer=dbl_metaphone' -d 'KAMRAL'

我有:

{
  "tokens": [
    {
      "token": "KMRL",
      "start_offset": 0,
      "end_offset": 6,
      "type": "word",
      "position": 1
    }
  ]
}

0 个答案:

没有答案