使用Elasticsearch我试图用用户提供的字符串查询索引。我的文档包含标点符号,我想保留这些标点符号,以便在检索时能正确显示,但我不希望该标点符号影响任何搜索结果,而不管它是否在查询中提供。例如:Elasticsearch与NEST - 如何在搜索时忽略标点符号
实施例的文档:
{ 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。
谢谢你,但我发现它只能用其他方式 - 例如。如果文档包含“joe amazing document”,并且查询是针对所有格形式的“joe的惊人文档”(有或没有撇号),那么英语分析师正确地指出这应该仍然是最佳匹配。但是,如果文档包含所有格形式“joe的惊人文档”,则“joes ...”的查询不匹配。我想我会继续尝试,谢谢。 – embee
这看起来很奇怪。我猜想,你可能会遇到一些奇怪的事情。有一些古怪的案件,它不处理完美。你确定你的英语分析器也被应用于查询吗? – femtoRgon
是的我正在使用完全相同的数据测试两个索引上的各种情况,一个使用每个分析器,然后使用相关分析器在每个分析器上运行查询。当查询包含所有格而数据不包含时,我只注意到两组评分和结果顺序之间的差异。 – embee