【问题标题】:Meta Search Engine Architecture元搜索引擎架构
【发布时间】:2011-02-20 11:13:58
【问题描述】:

我认为这个问题还不够清楚;这是一个更新的直截了当的问题:

构建元搜索引擎的常用架构是什么?是否有任何库可用于构建这种类型的搜索引擎?

我正在考虑构建“企业”类型的搜索引擎,其中索引数据可能来自专有(如 Autonomy 或 Google Box)或公共搜索引擎(如 Google Web 或 Yahoo Web)。

【问题讨论】:

  • .. 取决于你所说的“元搜索”是什么意思
  • 我的意思是搜索引擎的搜索引擎。比如en.wikipedia.org/wiki/Metasearch_engine。联合搜索也很常见。
  • 您对架构的哪些方面感兴趣?我在我的回答中介绍了您可能需要用来与不同搜索引擎交谈的基本适配器想法,但是您还想了解其他内容吗?管理飞行中的请求(因为我假设您将并行执行它们)也许?或者完全是别的东西。

标签: java design-patterns search-engine meta-search


【解决方案1】:

如果您查看Garlic (pdf),您会注意到它的架构足够通用,可以适应元搜索引擎。

更新:

粗略的建筑草图是这样的:

   +---------------------------+
   |                           |
   |    Meta-Search Engine     |         +---------------+
   |                           |         |               |
   |   +-------------------+   |---------| Configuration |
   |   | Query Processor   |   |         |               |
   |   |                   |   |         +---------------+
   |   +-------------------+   |
   +-------------+-------------+
                 |
      +----------+---------------+
   +--+----------+-------------+ |
   |             |             | |
   |     +-------+-------+     | |
   |     |    Wrapper    |     | |
   |     |               |     | |
   |     +-------+-------+     | |
   |             |             | |
   |             |             | |
   |     +-------+--------+    | |
   |     |                |    | |
   |     | Search Engine  |    | |
   |     |                |    +-+
   |     +----------------+    |
   +---------------------------+

描绘的部分是:

  • 元搜索引擎 - 引擎,协调整个事情。
  • 查询处理器 - 引擎的一部分,解析功能、发送请求并聚合特定搜索引擎的结果(通过包装器)。
  • Wrapper - 将元搜索引擎 API 连接到特定搜索引擎。每个包装器都与特定的搜索引擎一起使用。向元搜索引擎公开外部搜索引擎功能,接受并响应搜索请求。
  • 搜索引擎 - 要查询的外部搜索引擎,它们通过包装器暴露给元搜索引擎。
  • 配置 - 配置元搜索引擎的数据,例如,使用哪些包装器、在哪里可以找到更多包装器等。也可以配置包装器。

【讨论】:

  • 呃,链接到 PDF 时要小心!
  • +1 :我目前正在研究这个,这几乎就是我最终的结果。我有一个元查询,包装器将查询转换为实际搜索引擎的格式。然后包装器将答案转换为元结果,然后你就可以了......
  • 这个草图是如何生成的?从任何网站?或使用任何工具?
【解决方案2】:

看看Lucene

Apache Lucene 是一个高性能、 功能齐全的文本搜索引擎 完全用Java编写的库。它 是一种适用于几乎 任何需要的应用程序 全文搜索,尤其是 跨平台。

【讨论】:

  • Lucene/Solr/Nutch 可以处理元搜索(或联合搜索)吗?
  • 不是直接的。但是 Lucene 的索引功能非常棒,尤其是增量索引构建和合并多个索引。功能列表是lucene.apache.org/java/docs/features.html
【解决方案3】:

不完全是您正在寻找的东西,但我仍然建议您查看Compass,它可能会给您一些想法。也许还有Hibernate Search

更新:为了澄清,Compass 不是 ORM(也不是 Hibernate Search),它是一个面向搜索的 API,因为它试图抽象底层搜索引擎(Lucene),我建议有看看它使用的一些结构:分析器、分析器过滤器、查询解析器等。

建立在 Lucene 之上,Compass simplifies Lucene 的常见使用模式,例如 google 风格的搜索 (...)

另见:

【讨论】:

    【解决方案4】:

    这个页面似乎列出了一些:

    http://java-source.net/open-source/search-engines

    我想这些 API 都将是相似的,因为它们采用查询字符串和一些选项,并返回结果集合。但是,选项和结果的确切类型可能会有所不同,因此我认为您需要某种适配器方法(例如)来统一对不同后端的访问。

    【讨论】:

      【解决方案5】:

      如果您可以阅读 Objective-C 并希望查看类似“元搜索引擎”的工作示例,您可能需要查看 Google 的 Vermilion 框架的源代码。它使用支持 OS X 非常流行的 Google Quick Search Box 实用程序的引擎(这又很像 QuickSilver

      该框架提供了为搜索过程添加插件后端的能力,并处理来自多个来源的结果的合并排序等。我想任何类型的联合搜索引擎的设计都将遵循类似的设计。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-29
        • 2016-12-31
        • 2011-09-15
        相关资源
        最近更新 更多