是否有针对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
以及对该问题的反向引用