我正在使用弹性搜索的语音插件过滤器 . https://github.com/elastic/elasticsearch-analysis-phonetic
当我创建索引时,我正在使用以下设置创建自定义过滤器 .
soundex: {
type: "phonetic",
encoder: "metaphone",
replace: "true"
}
这样可以正常工作,但创建的metaphone令牌最大长度为4个字符,这会给我的搜索结果增加太多噪音 . 例如,我获得了避孕和控制的KNTR(它的医疗数据) .
根据Unexpected results from Metaphone algorithm,底层Java API包含setMaxCodeLen值 . 在elasticsearch中配置它时如何设置?
我想做点什么:
soundex: {
type: "phonetic",
encoder: "metaphone",
replace: "true",
maxcodelen: 8
}
但到目前为止,我一直无法确定是否可以配置编码器以增加编码令牌的最大长度 . 可以配置吗?如果是这样,怎么样?
1 回答
我认为配置它是不可能的 . 我已经检查了插件的源代码,看起来很容易实现你的要求 .
在PhoneticTokenFilterFactory.java你会看到:
您可以猜到,可以配置
replace
参数,但maxcodelenght
始终设置为0
. 因此,您可以通过以下方式更改该行:我将新属性命名为“maxcodelen”,因为它是您在示例中使用的名称 .
然后你可以编译它并从你的本地安装修改过的插件(check how to install local plugins)
如果一切正常并且您想要,请发送拉取请求:)