我想添加一个 custom phonetic analyzer
,也不想分析我给定的字符串。假设,我有两个字符串,
卡姆鲁伊斯兰
卡姆拉尔伊斯兰教
我不想使用查询字符串获得任何结果,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
}
]
}