我有一批"智能手机"在ES和我的产品需要使用"智能手机"文本。所以我正在研究复合词令牌过滤器。具体来说,我打算使用这样的自定义过滤器:
Error: EPERM: operation not permitted, write
这是正确的做法吗?另外我想问你如何创建自定义分析器并将其添加到ES?我查看了几个链接,但无法弄清楚如何做到这一点。我想我正在寻找正确的语法。 谢谢
编辑
我正在运行1.4.5版本。 我确认自定义分析仪已成功添加:
curl -XPUT 'localhost:9200/_all/_settings -d '
{
"analysis" : {
"analyzer":{
"second":{
"type":"custom",
"tokenizer":"standard",
"filter":["myFilter"]
}
"filter": {
"myFilter" :{
"type" : "dictionary_decompounder"
"word_list": ["smart", "phone"]
}
}
}
}
}
'
答案 0 :(得分:3)
您的方法看起来不错,我还会考虑添加lowercase token filter,这样即使智能手机(注意大写' S')也会被分成智能和手机。
然后你可以用这样的分析器创建索引,
custom analyzer
您要创建名为 your_index 的索引,curl -XGET 'localhost:9200/your_index/_analyze' -d '
{
"analyzer" : "second",
"text" : "LG Android smartphone"
}'
名为 second 的索引,并将其应用于 name 字段。
您可以检查分析仪是否按预期使用analyze api这样
{{1}}
希望这会有所帮助!!