当前位置: 首页 > 知识库问答 >
问题:

如何增加弹性搜索变音语音过滤器的最大代码长度?

堵宏毅
2023-03-14

我正在使用语音插件过滤器进行elasticsearch。https://github.com/elastic/elasticsearch-analysis-phonetic

当我创建索引时,我正在使用以下设置创建一个自定义过滤器

soundex: {
            type: "phonetic",
            encoder: "metaphone",
            replace: "true"
}

这工作正常,但正在创建最大长度为4个字符的隐喻标记,这给我的搜索结果增加了太多噪音。例如,我得到避孕和控制的KNTR(这是医学数据)。

根据变音算法的意外结果,底层Java API包含setMaxCodeLen值。在elasticsearch中配置时如何设置?

我想做这样的事情:

    soundex: {
                type: "phonetic",
                encoder: "metaphone",
                replace: "true",
                maxcodelen: 8
    }

但到目前为止,我还无法确定是否可以配置编码器以增加编码令牌的最大长度。是否可以对此进行配置?如果是,如何?

共有1个答案

邓令
2023-03-14

我认为不可能配置它。我已经检查了插件的源代码,似乎很容易实现你的要求。

在语音令牌过滤器工厂。java您将看到:

this.maxcodelength = 0;
this.replace = settings.getAsBoolean("replace", true);

正如您所猜测的那样,可以配置参数,但MaxCodeLength始终设置为0。因此,您可以通过以下方式更改该行:

this.maxcodelength = settings.getAsInt("maxcodelen", 0);

我将新属性命名为“maxcodelen”,因为它是您在示例中使用的名称。

然后您可以编译它并从本地安装修改后的插件(检查如何安装本地插件)

如果一切正常,并且您喜欢,请发送请求:)

 类似资料:
  • 我正在尝试在Elastic 2中创建一个过滤索引别名。十、 以下是所有青少年的资料,不分性别。我只想在这个过滤器里看到雌性。 这就是我试图创建索引别名的原因: 我看了这个问题,似乎是相同的答案,但是我的JSON一定有问题。 Elasticsearch将范围和术语连接到相同的数组项

  • 我正在使用以下搜索: 我现在想使用弹性搜索在索引过程中提供的id ()来过滤结果。例如,{}。我猜你得用查询这个词。结果应该是只有当< code>_id匹配时,文档才返回。我该怎么做呢?

  • 我有以下弹性搜索查询只有一个术语过滤器。我的问题要复杂得多,但我只是想在这里展示这个问题。 当我将一个连字符的值传递给过滤器时,返回的结果为零。但如果我尝试不使用未被忽略的值,我会得到结果。我不确定连字符在这里是否是一个问题,但我的场景让我相信这一点。 有没有办法跳过连字符,这样过滤器就会返回结果?我曾试图用反斜杠来逃避连字符,这是我从Lucene论坛上读到的,但没有用。 此外,如果我将GUID值

  • 本文向大家介绍Android RecyclerView添加搜索过滤器的示例代码,包括了Android RecyclerView添加搜索过滤器的示例代码的使用技巧和注意事项,需要的朋友参考一下 搜索过滤功能,相信大家都能用到,一般都是针对列表进行过滤的。下面给大家提供一种过滤列表的方法。 老规矩,先上图 RecycleView搜索过滤器-getFilter() Android 提供了Filetera

  • 这是回应的一部分 我有联系人号码和名字 现在我的第二个查询->我正在使用术语筛选器查询上面的联系电话

  • 在学习ElasticSearch的过程中,我偶然发现并没有得出最终结论。 ElasticSearch的最大碎片大小是多少