搜索 – 使用通配符和词干的组合

搜索 – 使用通配符和词干的组合,第1张

概述我正在使用雪球分析仪来阻止多个文档的标题.一切都运作良好,但他们是一些怪癖. 例: 搜索“valv”,“valve”或“valve”会返回相同数量的结果.这是有道理的,因为雪球分析仪将所有内容减少到“valv”. 使用通配符时遇到问题.搜索“valve *”或“valve *”不会返回任何结果.搜索“valv *”按预期工作. 我理解为什么会这样,但我不知道如何解决它. 我想过编写一个存储词干和非 我正在使用雪球分析仪来阻止多个文档的标题.一切都运作良好,但他们是一些怪癖.

例:

搜索“valv”,“valve”或“valve”会返回相同数量的结果.这是有道理的,因为雪球分析仪将所有内容减少到“valv”.

使用通配符时遇到问题.搜索“valve *”或“valve *”不会返回任何结果.搜索“valv *”按预期工作.

我理解为什么会这样,但我不知道如何解决它.

我想过编写一个存储词干和非词干标记的分析器.基本上应用两个分析器并组合两个令牌流.但我不确定这是否是一个实用的解决方案.

我还考虑过使用AnalyzingqueryParser,但我不知道如何将它应用于多字段查询.此外,使用AnalyzingqueryParser会在搜索“valve *”时返回“valve”的结果,这不是预期的行为.

是否有一种利用通配符和词干算法的“首选”方式?

解决方法 之前我用过2种不同的方法来解决这个问题

>使用两个字段,一个包含词干项,另一个包含由StandardAnalyzer生成的术语.解析搜索查询时,如果在“标准”字段中进行通配符搜索,则不使用带有词干项的字段.如果您让用户直接在Lucene的queryParser中输入查询,则可能更难使用.
>编写自定义分析器和索引重叠标记.它基本上包括使用positionIncrementAttribute索引原始术语和索引中相同位置的词干.您可以查看SynonymFilter以获取有关如何正确使用positionIncrementAttribute的示例.

我更喜欢解决方案#2.

总结

以上是内存溢出为你收集整理的搜索 – 使用通配符和词干的组合全部内容,希望文章能够帮你解决搜索 – 使用通配符和词干的组合所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1109222.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存