Я хотел бы получить анализатор с поведением стандартного английского анализатора, а также набор слов, которые должны быть синонимами во время поиска.фильтр синонимов elasticsarch с английским анализатором
Это определение, которое я пробовал:
{
"analysis": {
"filter": {
"synonym_en": {
"type": "synonym",
"synonyms": [
"universe, cosmos",
"women, woman",
"man, men"
]
},
"my_filter": {
"type": "word_delimiter",
"preserve_original": "false",
"split_on_numerics": "false"
}
},
"analyzer": {
"my_analyzer": {
"type": "custom",
"filter": [
"my_filter"
],
"tokenizer": "keyword"
},
"my_english": {
"type": "english",
"stopwords": [
"a",
"an",
"and",
"are",
"as",
"at",
"be",
"but",
"by",
"for",
"if",
"into",
"is",
"it",
"of",
"on",
"or",
"such",
"that",
"the",
"their",
"then",
"there",
"these",
"they",
"this",
"to",
"was",
"will",
"with"
],
"filter": [
"synonym_en"
]
}
}
}
}
Однако я не мог получить его буксирный работу. на самом деле, когда я запускаю пример:
GET /my_index/_analyze?analyzer=my_english&text='Men'
Это только возвращает маркер men
, в то время как я хотел бы иметь как man
и men
.
Обратите внимание, что более простой анализатор
{
"settings": {
"analysis": {
"filter": {
"my_synonym_filter": {
"type": "synonym",
"synonyms": [
"british,english",
"queen,monarch",
"man,men"
]
}
},
"analyzer": {
"my_synonyms": {
"tokenizer": "standard",
"filter": [
"lowercase",
"my_synonym_filter"
]
}
}
}
}
}
Кажется, работает, как она возвращается man
и men
.
Как я могу добиться желаемого поведения +, исходя из английского анализатора?