Ключевое слово Elasticsearch не работает с фонетическим анализатором
Я хочу добавить кастом 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
}
]
}