gpt4 book ai didi

.net - 使用NEST进行Elasticsearch-搜索时如何忽略标点符号

转载 作者:行者123 更新时间:2023-12-02 23:04:44 25 4
gpt4 key购买 nike

我正在尝试使用Elasticsearch使用用户提供的字符串查询索引。我的文档包含要保留的标点符号,因此它们在检索时可以正确显示,但是我不希望该标点符号影响任何搜索结果,无论查询中是否提供了标点符号。例如:

示例文件:

{ name: "joe's amazing document" }

当使用标准分析器查询 "joe's amazing document"时,此方法工作正常,但是,如果用户键入 "joes amazing document",则这不是精确匹配项,并且文档在其他低分匹配项中丢失。

到目前为止,我一直都没有找到如何使用NEST进行搜索的方法-我怀疑我可能需要使用char_filter such as this,但是从NEST项目源中查看测试,我看不到如何添加自己的自定义char_filter使用我自己的指定映射,似乎只允许我指定Elasticsearch已经知道的过滤器(扩展 CharFilterBase 仅允许指定要使用的现有过滤器的名称)

谁能指出我在这里所做的正确方向?我知道我可能会解决所有这些错误,因此任何帮助都将非常有用-我可以使用NEST或Elasticsearch进行此操作,还是需要以某种方式自定义Elasticsearch?还是有我无法找到的解决方案?谢谢!

更新:由于femtoRgon的回答将我指向正确的方向,请参阅下面的 my answer了解如何在NEST中使用 Snowball analyzer

最佳答案

我认为收缩和所有格对于标准分析仪可能是有问题的,因为它们是特定于语言的。相比:

  • 英语:“乔的惊人文档”
  • 西类牙语:“Documento impresionante de Joe”
  • 德语:“Joe erstaunliche dokument”)。

  • 因此, language specific analyzer可能是最好的解决方案。 EnglishAnalyzer包含EnglishPossessiveFilter,它应该处理这种情况。

    您可以设置英语分析仪,例如:
    index :
    analysis :
    analyzer :
    english :
    type : english
    stopwords : [...]
    stem_exclusion : [...]
    stopwordsstem_exclusion都是可选的。当然,请确保在索引和查询时使用相同的分析器。

    关于.net - 使用NEST进行Elasticsearch-搜索时如何忽略标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22074340/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com