Для этой последовательности команд:
Создание индекса:
PUT /test_index?
{
"settings": {
"analysis": {
"analyzer": {
"GermanCompoundWordsAnalyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"german_compound_synonym",
"german_normalization"
]
}
},
"filter": {
"german_compound_synonym": {
"type": "synonym",
"synonyms": [
"teppichläufer, auslegware läufer"
]
}
}
}
},
"mappings": {
"_doc": {
"properties": {
"name": {
"type": "text",
"analyzer": "GermanCompoundWordsAnalyzer"
}
}
}
}
}
Добавление нескольких документов:
POST test_index/_doc/
{
"sku" : "kimchy",
"name" : "teppichläufer alfa"
}
POST test_index/_doc/
{
"sku" : "kimchy",
"name" : "teppichläufer beta"
}
Поиск одного документа (я бы ожидал), но возвращаются 2: (
GET /test_index/_search
{
"query": {
"match": {
"name": {
"query": "teppichläufer beta",
"operator": "and"
}
}
}
}
Я получу оба документа, так как синоним teppichläufer, auslegware läufer
, läufer
окажется на позиции 1 и «заменит» beta
. Если удалить"analyzer": "GermanCompoundWordsAnalyzer"
, я получу только один документ, как и ожидалось.
Как использовать этот синоним и у меня нет этой проблемы?