我是elasticsearch的新手。我想在elasticsearch中创建一个自定义分析器,使用自定义过滤器和自定义词干分析器。我知道ElasticSearch是建立在lucene之上的,而在lucene中,定制的stemmer支持就在那里。但是,我无法找到任何示例,它显示了lucene中的自定义分析器/词干分析器实现以及在elasticsearch中的相同集成。
为糟糕的英语道歉。提前谢谢。
编辑1
我想要的是Hinglish Stemmer,它会将以下输入转换为以下输出: -
答案 0 :(得分:2)
最后,经过几次打嗝,我终于能够创建hinglish-stemmer的实现了。它可以在以下链接中找到: -
答案 1 :(得分:1)
我会尝试写一个简单的答案,如果您有任何疑问,请告诉我。
第一步:创建custom_stemming文件(此处为" custom_stems.txt"),如下所示,并将其放入config文件夹(我把它放在" config / analysis / custom_stems下。 TXT&#34):
rama => ram
raam => ram
sachin => sachin
sacheen => sachin
sachina => sachin
sacheena => sachin
kuldeep => kuldip
kooldeep => kuldip
kooldipa => kuldip
然后创建一个具有足够映射的索引(我使用此示例中的映射,您可以创建其他分析器,这里唯一重要的部分是" custom_stems" stemmer):
PUT /my_index
{
"settings": {
"analysis" : {
"analyzer" : {
"my_analyzer" : {
"tokenizer" : "standard",
"filter" : ["lowercase", "custom_stems"]
}
},
"filter" : {
"custom_stems" : {
"type" : "stemmer_override",
"rules_path" : "analysis/custom_stems.txt"
}
}
}
}
}
测试它是否有效:
GET /my_index/_analyze
{
"text": ["Rama"],
"analyzer": "my_analyzer"
}
你应该在输出中看到:
{
"tokens": [
{
"token": "ram",
"start_offset": 0,
"end_offset": 4,
"type": "<ALPHANUM>",
"position": 0
}
]
}
请注意,我使用了: