【问题标题】:Lucene.NET: Best way to process keyword snippets from document textLucene.NET:从文档文本中处理关键字片段的最佳方式
【发布时间】:2009-10-30 17:34:23
【问题描述】:

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

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

  1. 我是不是只取选定的项目 id,重新查询那个文档,然后让 Lucene 的荧光笔给我 sn-ps 的集合?

  2. 或者,既然我已经有了每个结果记录的文本内容,那么使用 C# 字符串操作手动处理 sn-ps 会更好吗?

如果是 1.,能否请您指出一个示例,说明如何编写查询以在 Lucene 中搜索单个文档?

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 完美。谢谢你的回答。
    • 嗨,鲍勃,我也遇到了这个问题。我正在使用 Lucene.Net v 2.9.4g 和 sensenet,但我没有 Lucene.Net.Highlight 库。有没有办法获取这个版本的源代码或dll?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2022-11-07
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多