【发布时间】:2010-09-10 01:49:38
【问题描述】:
我使用 (Java) Highlighter for Lucene(在 Sandbox 包中)已有一段时间了。但是,在匹配搜索结果中的正确词时,这并不是很准确 - 它适用于简单的查询,例如搜索两个单独的词会在结果中突出显示两个代码片段。
但是,它不适用于更复杂的查询。在最简单的情况下,诸如“Stack Overflow”之类的短语查询将匹配突出显示中出现的所有 Stack 或 Overflow,这会给用户一种效果不佳的印象。
我尝试应用修复程序here,但这带来了很多性能警告,最终根本无法使用。性能尤其是通配符查询的问题。这是由于突出显示的工作方式;而不是只处理查询字符串和文本,它会像 Lucene 那样解析它,然后查找 Lucene 所做的所有匹配;不幸的是,这意味着对于某些通配符查询,它可能会在大型文档中查找 2000 多个子句的匹配项,而且速度还不够快。
有没有更快的准确荧光笔实现方式?
【问题讨论】:
-
“Lucene 荧光笔”链接目前已损坏。
-
感谢您指出这一点,我已经修复了链接。
-
现在 Lucene 3.0.0 已经发布,您应该会发现将所有内容升级到该版本将使一切正常运行。但是 - 请注意,荧光笔现在也依赖于来自 contrib 的 lucene-memory(这只会在突出显示完全匹配时显示)