我应该只使用Lucene进行突出显示吗?

时间:2011-11-09 16:19:45

标签: java lucene

我有一个应用程序,用于搜索MSSQL数据库中索引的文本。我当前的搜索功能正常。我只需要用搜索词的周围文本显示搜索结果(比如google)。我能找到的唯一工具是Lucene的文字突出显示。我从这个问题中读到了这个问题:Displaying sample text from the Lucene Search Results。我没有长时间关注Lucene,但我猜我必须为每次搜索创建文档。

我想知道我想要做什么甚至可能与Lucene一起使用,以及为了我的目的使用这样的工具是否有点过分。我可以/应该使用其他任何工具吗?

3 个答案:

答案 0 :(得分:2)

这取决于您要突出显示的文本的大小,但如果它相当小,您可以在搜索后端上使用Lucene突出显示功能。有关详细信息,请参阅Highlighter文档。

如果这对你来说不够快(如果你想突出显示大块文本),Lucene可以使用term vectors更快地突出显示,但这需要你移动你的后端MSSQL到Lucene。

答案 1 :(得分:1)

这将是矫枉过正的:Lucene是一个完整的搜索/索引引擎,具有词干,得分和其他东西。它可能更好而不是你正在做的事情,但这取决于你的目标。

如果您只是进行简单的关键字突出显示,请考虑使用正则表达式插入突出显示标记。

答案 2 :(得分:1)

如果已经可以找到找到的关键字的周围文本,这真的是你唯一需要的东西,那么是的,Lucene是一种矫枉过正 - 只是使用突出显示标签围绕您的关键字。但是,在大多数情况下

但在大多数情况下,人们开始考虑其他高级选项,例如阻止(如果你搜索“突出显示”,你也会发现“突出显示”和“突出显示”),同义词搜索,语言检测等。如果您以为您可能需要这样的东西,或者您还没有准备好算法来查找带有关键字(周围文本)的文本片段,我强烈建议你潜入Lucene 世界。我能想到的最好的选择是索引MSSQL中的所有文本字段,并将所有文本搜索基于Lucene。

如果您害怕硬Lucene编码,您可以使用Solr - 基于Lucene的Web服务器,具有极其广泛的功能,可以使用XML文件轻松配置。 Solr有两个 - 简单的Web和许多编程接口(Java的Solrj)。