如何增加 elasticsearch metaphone 语音过滤器的最大代码长度?
How do you increase the max code length of an elasticsearch metaphone phonetic filter?
我正在使用 elasticsearch 的语音插件过滤器。 https://github.com/elastic/elasticsearch-analysis-phonetic
当我创建索引时,我正在创建一个具有以下设置的自定义过滤器。
soundex: {
type: "phonetic",
encoder: "metaphone",
replace: "true"
}
这工作正常,但正在创建最大长度为 4 个字符的 metaphone 令牌,这给我的搜索结果增加了太多噪音。例如,我得到 KNTR 用于避孕和控制(这是医疗数据)。
根据 Unexpected results from Metaphone algorithm 基础 Java API 包含一个 setMaxCodeLen 值。在elasticsearch中配置的时候怎么设置?
我想做这样的事情:
soundex: {
type: "phonetic",
encoder: "metaphone",
replace: "true",
maxcodelen: 8
}
但到目前为止,我一直无法确定是否可以配置编码器以增加编码令牌的最大长度。可以配置这个吗?如果是,怎么做?
我认为无法配置它。我查看了插件的源代码,似乎很容易实现你所要求的。
在PhoneticTokenFilterFactory.java你会看到:
this.maxcodelength = 0;
this.replace = settings.getAsBoolean("replace", true);
如您所料,可以配置 replace
参数,但 maxcodelenght
始终设置为 0
。因此,您可以通过以下方式更改该行:
this.maxcodelength = settings.getAsInt("maxcodelen", 0);
我将新名称命名为 属性 "maxcodelen" 因为这是您在示例中使用的名称。
然后就可以在本地(check how to install local plugins)编译安装修改后的插件了
如果一切正常并且您愿意,请发送拉取请求:)
我正在使用 elasticsearch 的语音插件过滤器。 https://github.com/elastic/elasticsearch-analysis-phonetic
当我创建索引时,我正在创建一个具有以下设置的自定义过滤器。
soundex: {
type: "phonetic",
encoder: "metaphone",
replace: "true"
}
这工作正常,但正在创建最大长度为 4 个字符的 metaphone 令牌,这给我的搜索结果增加了太多噪音。例如,我得到 KNTR 用于避孕和控制(这是医疗数据)。
根据 Unexpected results from Metaphone algorithm 基础 Java API 包含一个 setMaxCodeLen 值。在elasticsearch中配置的时候怎么设置?
我想做这样的事情:
soundex: {
type: "phonetic",
encoder: "metaphone",
replace: "true",
maxcodelen: 8
}
但到目前为止,我一直无法确定是否可以配置编码器以增加编码令牌的最大长度。可以配置这个吗?如果是,怎么做?
我认为无法配置它。我查看了插件的源代码,似乎很容易实现你所要求的。
在PhoneticTokenFilterFactory.java你会看到:
this.maxcodelength = 0;
this.replace = settings.getAsBoolean("replace", true);
如您所料,可以配置 replace
参数,但 maxcodelenght
始终设置为 0
。因此,您可以通过以下方式更改该行:
this.maxcodelength = settings.getAsInt("maxcodelen", 0);
我将新名称命名为 属性 "maxcodelen" 因为这是您在示例中使用的名称。
然后就可以在本地(check how to install local plugins)编译安装修改后的插件了
如果一切正常并且您愿意,请发送拉取请求:)