我想添加自定义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
}
]
}