我一直在使用(Java)Highlighter for Lucene(在Sandbox包中)。但是,在匹配搜索结果中的正确术语时,这并不是非常准确 - 它适用于简单查询,例如,搜索两个单独的单词将突出显示结果中的两个代码片段。
但是,对于更复杂的查询,它不能很好地运行。在最简单的情况下,诸如“Stack Overflow”之类的短语查询将匹配突出显示中所有出现的Stack或Overflow,这给用户留下了不能很好地工作的印象。
我尝试应用修复程序here,但这带来了许多性能警告,并且在一天结束时只是普遍无法使用。性能尤其是通配符查询的问题。这是由于突出显示的工作方式;它不是仅仅处理查询字符串和文本,而是像Lucene那样解析它,然后查找Lucene所做的所有匹配;不幸的是,这意味着对于某些通配符查询,它可以在大文档上查找2000+子句的匹配,而且它的速度不够快。
是否有更快的实施准确的荧光笔?
答案 0 :(得分:2)
有一种新的更快的荧光笔(需要修补,但将成为2.9版的一部分)
https://issues.apache.org/jira/browse/LUCENE-1522
以及此问题的back-reference
答案 1 :(得分:1)
你可以考虑使用Solr。 http://lucene.apache.org/solr
Solr是一种使用Lucene并支持突出显示的通用搜索应用程序。 Solr中的突出显示可能可用作Solr之外的API。您还可以看看Solr是如何为灵感而做的。
答案 2 :(得分:1)
我一直在阅读这个主题并遇到spanQuery,这会在匹配的字段中返回匹配的字词或字词的范围。