我一直在使用(Java) Lucene 荧光笔 (在沙箱包中)一段时间。然而,当涉及到匹配搜索结果中的正确术语时,这并不是非常准确 - 它适用于简单查询,例如搜索两个单独的单词将突出显示结果中的两个代码片段。

但是,它对于更复杂的查询表现不佳。在最简单的情况下,诸如“Stack Overflow”之类的短语查询将匹配突出显示中所有出现的 Stack 或 Overflow,这给用户留下了它工作得不太好的印象。

我尝试应用修复程序 这里 但这带来了很多性能警告,最终根本无法使用。通配符查询的性能尤其是一个问题。这是由于突出显示的工作方式所致;它不像 Lucene 那样只处理查询字符串和文本,然后查找 Lucene 所做的所有匹配;不幸的是,这意味着对于某些通配符查询,它可能会在大型文档上查找 2000 多个子句的匹配项,而且速度不够快。

有没有更快实现准确荧光笔的方法?

有帮助吗?

解决方案

有一个新的更快的荧光笔(需要修补,但将成为版本 2.9 的一部分)

https://issues.apache.org/jira/browse/LUCENE-1522

和一个 反向引用 对于这个问题

其他提示

您可以考虑使用 Solr。 http://lucene.apache.org/solr

Solr 是一种使用 Lucene 并支持突出显示的通用搜索应用程序。Solr 中的突出显示可能可以用作 Solr 外部的 API。您还可以看看 Solr 是如何做的以获得灵感。

我一直在阅读有关该主题的文章并发现 跨度查询 这将返回匹配字段中匹配术语或术语的范围。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top