【问题标题】:Help with Search Engine Architecture .NET C#帮助搜索引擎架构 .NET C#
【发布时间】:2009-08-13 20:48:47
【问题描述】:

我正在尝试创建一个搜索引擎,用于搜索与特定精神团体相关的所有文学作品(书籍、文章等)、音乐和视频。输入关键字后,我想显示指向所有出现该关键字的 PDF 文章的链接,以及所有带有相关关键字标记的音乐文件和视频文件的链接。用户应该能够使用作者/艺术家、地点、日期/时间等信息对其进行过滤。当用户单击其中一个结果链接(例如书名)时,他们会被带到另一个页面,其中 sn -ps 从该书中找到关键字的任何地方都会显示。

我想使用 Lucene 库(或 Searcharoo)来实现我的 PDF 搜索,但我还需要一个数据库来标记所有其他信息,以便可以按作者/艺术家信息等过滤结果。所以我在想拥有文本、音乐和视频的表格,以及包含每个文件路径的字段。输入关键字时,我需要在数据库中搜索音乐和视频文件,还需要搜索 PDF,当应用过滤器时,音乐和视频搜索很容易,但基于过滤器限制了文本搜索越来越混乱了。

我的方法正确吗?有没有更好的方法来做到这一点?由于搜索内容仅限于灵族,所以搜索的项目不是无限的。我会说大约 100-500 本书和 1000-5000 首歌曲。

【问题讨论】:

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


    【解决方案1】:

    Lucene 是一种无需太多努力即可快速启动和运行的好方法,它还提供了几个扩展索引和搜索功能以更好地满足您的需求的领域。它还内置了几种常见文件类型的分析器,例如 HTML/XML、PDF、MS Word 文档等。

    它提供了使用各种字段的能力,并且它们不一定必须在所有文档中保持一致(换句话说,音乐文件可能具有与基于文本的内容不同的属性,例如艺术家、标题、长度等),非常适合存储不同类型的内容。

    不知道你正在做的事情的确切实现,这可能可行,也可能不可行,但对于标记和其他相关功能,你也可以考虑使用数据库,例如 MySQL 或 SQL Server。支持Lucene索引。使用 Lucene 索引进行全文搜索,然后一旦你有了结果集,就去数据库提取所有的关系内容。我们公司以前也这样做过,实际上并没有听起来那么头疼。

    注意:如果你决定走这条路,请小心,因为 Lucene 提供的“唯一 id”是高度易变的(每次优化索引时它都会改变),所以你会想要将实际 id(数据库中的主键)存储为 Document 上的单独字段。

    另一个额外的好处是,如果您打算使用 C#.NET,则有一个名为 Lucene.Net 的端口,它完全用 C# 编写。不利的一面是,您在所有最新功能方面都落后了几个月,但如果您真的需要它们,您可以随时查看 Java 源代码并手动实现所需的更新。

    【讨论】:

    • 所以说我在一个文件夹中有一堆文件要搜索。如何为每个文件添加属性(艺术家等)?
    • 如果你正在使用文件,你可能可以通过文件扩展名正确分类它们,然后根据每个文件的扩展名,你只需要编写代码来正确构建你想要的 Lucene 文档添加到您的索引。希望有帮助!
    【解决方案2】:

    是的,有更好的方法。试试Solr,特别是检查方面。它会为您省去很多麻烦。

    【讨论】:

    • 如果用户想要按作者、内容类型、文件大小等过滤搜索结果,多方面搜索是一个不错的选择。但是,据我所知,Solr 只能安装为Web 服务,因此启动和运行需要更长的时间,并且在客户端计算机上安装软件可能会成为配置噩梦。
    • 正确,Solr 为 Lucene 搜索索引提供了 Web 服务接口。是的,构面可用于过滤,还可以告诉您有关搜索对象的元数据。由于 Solr 是基于服务器的实现,因此不确定如何“在客户端计算机上安装软件”。除了公开搜索的应用程序之外,不涉及客户端的任何内容。
    • 通过“客户端”,我的意思是如果它被构建为“现成的”应用程序(例如,用户可以构建自己的索引)。根据这个问题,它似乎不是那样的,但如果它是未来的可能性,那么它肯定是值得考虑的。
    【解决方案3】:

    如果你确实想走数据库路线,那么你应该使用启用Full Text Search 的SQL Server。您也可以将其与 Express 版本一起使用。然后,您可以非常轻松地存储和搜索 PDF 的内容(只要您安装了免费的 Adob​​e PDF iFilter)。

    【讨论】:

    • 谢谢。我认为这可能有效。有没有办法使用 sql 查询在文档中找到关键字的任何地方获取文本的“sn-ps”?
    【解决方案4】:

    您可以尝试使用 MS Search Server Express Edition,主要好处之一是它是免费的。

    http://www.microsoft.com/enterprisesearch/en/us/search-server-express.aspx#none

    【讨论】:

    • 感谢您的提示。我简单地研究了一下,但我觉得全文搜索可能更容易。
    猜你喜欢
    • 1970-01-01
    • 2011-02-20
    • 2011-05-21
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 2015-07-16
    相关资源
    最近更新 更多