Может ли кто-нибудь дать мне совет, что я делаю неправильно. Я пытаюсь настроить elasticsearch таким образомElasticsearch синонимы, чувствительные к регистру результаты
{
"settings" : {
"index" : {
"analysis" : {
"analyzer" : {
"synonym" : {
"type" : "custom",
"tokenizer" : "whitespace",
"filter" : ["en_US", "lowercase", "synonym"]
}
},
"filter" : {
"synonym" : {
"type" : "synonym",
"synonyms_path" : "analysis/synonym.txt"
},
"en_US" : {
"type" : "hunspell",
"locale" : "en_US",
"dedup" : true
}
}
}
}
},
"mappings" : {
"jdbc" : {
"properties" : {
"Title" : {
"type" : "string",
"search_analyzer" : "synonym",
"index_analyzer" : "standard"
},
"Abstract" : {
"type" : "string",
"search_analyzer" : "synonym",
"index_analyzer" : "standard"
}
}
}
}
}
Мой файл synonym.txt содержит
beer, ale, lager, cark ale
Lithuania, Republic of Lithuania, Lithuanian
Так что пришло время, чтобы попробовать мой анализатор:
http://localhost:9200/jdbc/_analyze?text=beer&analyzer=synonym&pretty=true
Он работает как ожидается и вернет меня
{
"tokens" : [ {
"token" : "beer",
"start_offset" : 0,
"end_offset" : 4,
"type" : "SYNONYM",
"position" : 1
}, {
"token" : "ale",
"start_offset" : 0,
"end_offset" : 4,
"type" : "SYNONYM",
"position" : 1
}, {
"token" : "lager",
"start_offset" : 0,
"end_offset" : 4,
"type" : "SYNONYM",
"position" : 1
}, {
"token" : "cark",
"start_offset" : 0,
"end_offset" : 4,
"type" : "SYNONYM",
"position" : 1
}, {
"token" : "ale",
"start_offset" : 0,
"end_offset" : 4,
"type" : "SYNONYM",
"position" : 1
} ]
}
Однако, запрашивая это:
http://localhost:9200/jdbc/_analyze?text=Lithuanian&analyzer=synonym&pretty=true
вернуться бы только:
{
"tokens" : [ {
"token" : "lithuanian",
"start_offset" : 0,
"end_offset" : 10,
"type" : "word",
"position" : 1
} ]
}
Любые советы?
возможно дубликат [Case нечувствительности не работает] (http://stackoverflow.com/questions/17266830/case-insensitivity-does-not-work) – BMW
http://stackoverflow.com/questions/22522863/elasticsearch-case-insensitive-query-string-query-with-wildcards – BMW