【问题标题】:Lucene.NET Structure for a File Path Indexing Solution用于文件路径索引解决方案的 Lucene.NET 结构
【发布时间】:2012-03-03 07:12:57
【问题描述】:

我正在尝试在 C# .NET 4.0 和 WPF 中制作一个应用程序,该应用程序具有索引:

  1. 文件名(“taskmgr.exe”)
  2. 文件说明(“Windows 任务管理器”)
  3. 绝对父目录(“C:\Windows\System32”)

在用户计算机的所有硬盘上。

我没有索引文件的内容 - 只是文件名/路径/描述。另请注意,我只索引扩展名为 .DOC、.MP3、.EXE、.CS、.CPP 的实用文件。我不会索引无扩展名的文件、自定义扩展名、DLL 或其他类似的文件。

我是 Lucene 的新手,我已经阅读了几篇关于如何设计文档/索引结构的初学者文章。

我在想我的 Lucene 文档结构可能是这样的,即每个文件都是一个新文档,上面列出的三个字段作为三个密钥对值。这是推荐的吗?使用 Lucene 是正确的选择吗?搜索文件名是否是实时的(列表可以在没有太多延迟的情况下动态扩展和收缩所有可能的文件名和路径)?

如果需要任何统计数据,我的硬盘是 450 GB,总共有 681,014 个(所有扩展名)文件和 165,732 个文件夹。

【问题讨论】:

    标签: wpf c#-4.0 lucene.net lucene


    【解决方案1】:

    对 Lucene 来说都是一样的;问题是:您的用户想要什么?如果他们搜索“任务”,它是否应该与名称、描述或父目录中包含它的任何文件匹配?如果是这样,那么这应该是一个字段。

    您的用户是否希望更具体(例如filename:task)?如果是这样,那么您将需要单独的字段。

    顺便说一句:您可能想使用 Solr。它更易于设置,并且可以避免一些常见的陷阱。

    【讨论】:

    • 不能有网络应用 - 需要是桌面应用。据我了解,这消除了 Solr。
    • 您能否详细说明“如果它应该匹配其中包含名称、描述或父目录的任何文件,它应该都是一个字段?”我没有使用 Lucene 的经验,但我认为如果我输入文件描述的一部分,Lucene 可能会返回 Document 对象,我可以从中访问文件描述和文件路径。如果搜索匹配描述、名称或目录,我实际上确实需要返回的文件。这必须是一个领域...?
    • 您可以从许多方面访问 Solr,包括 C#。 Lucene 查询是针对每个字段的,因此您可以将搜索设置为 filename:foo description:foo parent:foo,但如果您只有一个字段 everything 可能会更容易,因此您的查询是 everything:foo。无论哪种情况,您都将取回整个文档(前提是已存储字段)。
    【解决方案2】:

    这是带有 dotLucene(现为 Lucene.net)的rather old article,但对于编写 Lucene 桌面搜索应用程序的新手非常有用。

    注意:Lucene.net 3.0 API 发生了显着变化,因此仅将其用作指导。

    【讨论】:

      猜你喜欢
      • 2012-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-05-16
      • 2015-11-21
      • 2019-03-06
      相关资源
      最近更新 更多