我在字段标题和描述上有一个德语分析器(它对我来说很好)
"mappings": {
"item" : {
"properties" : {
"title" : {
"type" : "string",
"analyzer": "german"
},
"description" : {
"type" : "string",
"analyzer": "german"
}
}
}
}
但现在我尝试添加synonyms。如何在同一个领域添加两个分析仪?
答案 0 :(得分:1)
您无法为1个字段添加两个分析器。你可以做的是描述自定义分析器,它使用内部的同义词过滤器和德国特定的过滤器结合所需的标记器,所以基本上你需要以自定义的方式混合你需要的一切。
可以想象这样的事情(一个非常粗略的例子):
PUT /my_index
{
"settings": {
"analysis": {
"filter": {
"german_stop": {
"type": "stop",
"stopwords": "_german_"
},
"german_stemmer": {
"type": "stemmer",
"language": "light_german"
},
"my_synonyms": {
"type": "synonym",
"synonyms": [
"british,english",
"queen,monarch"
]
}
},
"analyzer": {
"german": {
"tokenizer": "standard",
"filter": [
"lowercase",
"german_stop",
"my_synonyms",
"german_normalization",
"german_stemmer"
]
}
}
}
}
}
在过滤器链中,您需要指定要包含的所有过滤器 - 词干分析器,同义词,停用词,小写等等(还要记住,顺序很重要),并在映射中使用它,正如你在问题中描述的那样。
稍后您可以通过运行
来测试您的分析仪GET /_analyze
{
"analyzer": "german",
"text": "Darf ich mit Bargeld bezahlen?"
}