Использую плагин
russian_morphology.
Фамилию "петрова" анализатор превращает в токен "петров", а фамилию "петров" в "петров" и "петр". Тут все норм, так и должно быть.
А есть другая фамилия - "аккуратова", она превращяется в "аккуратов", а таже фамилия в именительном падеже мужского рода "аккуратов" превращяется в "аккурат". И тут возникает проблема. По запросу "аккуратов" мы не сможем найти например фразу "портрет Аккуратова".
Ниже настройки и примеры запросов к анализатору.
"settings" : {
"index" : {
"analysis" : {
"filter" : {
"my_stopwords" : {
"type" : "stop",
"stopwords" : "а,без,более,бы,был,была,были,было,быть,в,вам,вас,весь,во,вот,все,всего,всех,вы,где,да,даже,для,до,его,ее,если,есть,еще,же,за,здесь,и,из,или,им,их,к,как,ко,когда,кто,ли,либо,мне,может,мы,на,надо,наш,не,него,нее,нет,ни,них,но,ну,о,об,однако,он,она,они,оно,от,очень,по,под,при,с,со,так,также,такой,там,те,тем,то,того,тоже,той,только,том,ты,у,уже,хотя,чего,чей,чем,что,чтобы,чье,чья,эта,эти,это,я"
}
},
"char_filter" : {
"my_charfilter" : {
"type" : "mapping",
"mappings" : [ "Ё=>Е", "ё=>е" ]
}
},
"analyzer" : {
"my_analyzer" : {
"filter" : [ "lowercase", "russian_morphology", "my_stopwords" ],
"char_filter" : [ "my_charfilter" ],
"type" : "custom",
"tokenizer" : "standard"
}
}
},
$ curl -XGET 'localhost:9200/myindex/_analyze?pretty&tokenizer=standard&token_filters=russian_morphology' -d 'петрова'
{
"tokens" : [ {
"token" : "петров",
"start_offset" : 0,
"end_offset" : 7,
"type" : "<ALPHANUM>",
"position" : 1
} ]
}
$ curl -XGET 'localhost:9200/myindex/_analyze?pretty&tokenizer=standard&token_filters=russian_morphology' -d 'петров'
{
"tokens" : [ {
"token" : "петров",
"start_offset" : 0,
"end_offset" : 6,
"type" : "<ALPHANUM>",
"position" : 1
}, {
"token" : "петр",
"start_offset" : 0,
"end_offset" : 6,
"type" : "<ALPHANUM>",
"position" : 1
} ]
}
$ curl -XGET 'localhost:9200/myindex/_analyze?pretty&tokenizer=standard&token_filters=russian_morphology' -d 'аккуратов'
{
"tokens" : [ {
"token" : "аккурат",
"start_offset" : 0,
"end_offset" : 9,
"type" : "<ALPHANUM>",
"position" : 1
} ]
}
$ curl -XGET 'localhost:9200/myindex/_analyze?pretty&tokenizer=standard&token_filters=russian_morphology' -d 'аккуратова'
{
"tokens" : [ {
"token" : "аккуратов",
"start_offset" : 0,
"end_offset" : 10,
"type" : "<ALPHANUM>",
"position" : 1
} ]
}