是否有针对Lucene的快速,准确的荧光笔?

时间:2020-03-05 18:58:36  来源:igfitidea点击:

我一直在使用Lucene的(Java)Highlighter(在Sandbox程序包中)。但是,当要在搜索结果中匹配正确的词时,这并不是很准确,它对于简单的查询非常有效,例如,搜索两个单独的单词将突出显示结果中的两个代码片段。

但是,它不适用于更复杂的查询。在最简单的情况下,短语查询(例如" Stack Overflow")将与突出显示中所有出现的Stack或者Overflow匹配,这给用户留下了很好的印象。

我尝试在此处应用此修复程序,但这带来了很多性能方面的警告,并且最终还是完全无法使用。对于通配符查询,性能尤其重要。这是由于突出显示的工作方式;而不是像Lucene那样解析查询字符串和文本,而是查找Lucene进行的所有匹配;不幸的是,这意味着对于某些通配符查询,它可以在大型文档中查找与2000+子句的匹配项,而且速度不够快。

是否可以更快地实施准确的荧光笔?

解决方案

回答

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

Solr是一种使用Lucene并支持突出显示的通用搜索应用程序。 Solr中的突出显示可能可用作Solr之外的API。我们也可以看看Solr如何做到这一点来获得启发。

回答

我一直在阅读有关该主题的内容,并遇到了spanQuery,它将向我们返回匹配的术语或者匹配字段中术语的范围。

回答

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

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

以及对该问题的反向引用