Lucene.NET:从文档文本处理关键字片段的最佳方式

时间:2009-10-30 17:34:23

标签: .net lucene lucene.net full-text-search

我正在使用Lucene.Net来实现搜索网站(搜索PDF)。输入关键字后,我会显示结果,当单击其中一个结果项时,我想将用户带到“详细信息”页面,我希望在找到关键字的任何地方显示该PDF文档的片段。

所以我的问题是,从该文档中收集这些片段的最佳方法是什么?

  1. 我是否只选择了所选的项目ID,重新查询该文档,让Lucene的荧光笔给我一些片段?

  2. 或者,既然我已经为每个结果记录提供了文本内容,那么使用C#字符串操作手动处理代码段会更好吗?

  3. 如果是1.,请您指点一个如何编写查询以搜索Lucene中的单个文档的示例?

    感谢。

1 个答案:

答案 0 :(得分:0)

您应该使用Lucene Highlight软件包,因为您的查询和文档需要使用用于索引文档的相同分析器进行标记化。通过字符串方法直接使用C#可以工作,但是您必须使用相同的标记化逻辑来匹配文档文本的查询术语(例如词干,停止词等)。如果要在索引中存储文档的全文,则使用荧光笔很简单。如果不将文本存储在索引中,也可以从其他位置获取文档文本。您将需要传递初始搜索中使用的相同查询,并包含要突出显示的文档的完全匹配,例如,通过在查询中附加必需的子句来获取该文档的唯一ID。用于单个文档的查询应该有2个必需的子句,第一个子句是用于最初查找文档的原始查询,另一个子句是该单个文档的一些唯一标识符。通过这种方式,荧光笔可以使用相同的查询来生成突出显示的片段。