元搜索引擎架构

时间:2010-05-17 15:08:46

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

我认为问题不够明确;这是一个直接更新的问题:

构建元搜索引擎时常用的架构是什么?是否有可用于构建此类搜索引擎的库?

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

5 个答案:

答案 0 :(得分:9)

如果你看一下Garlic (pdf),你会发现它的架构很通用,可以适应元搜索引擎。

更新:

粗略的建筑素描是这样的:

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

描述的部分是:

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

答案 1 :(得分:3)

查看Lucene

  

Apache Lucene是一款高性能的   全功能的文本搜索引擎   库完全用Java编写。它   是一种适合近乎的技术   任何需要的应用程序   特别是全文搜索   跨平台。

答案 2 :(得分:2)

不完全符合您的要求,但我仍然建议您查看Compass,它可能会给您一些想法。也许还Hibernate Search

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

  

建立在Lucene之上,指南针simplifies Lucene的常见使用模式,例如谷歌式搜索(...)

另见:

答案 3 :(得分:1)

这个页面似乎列出了几个:

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

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

答案 4 :(得分:1)

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

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