15

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

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

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

4

5 回答 5

9

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

更新:

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

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

描绘的部分是:

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

看看Lucene

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

于 2010-05-19T22:21:10.090 回答
2

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

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

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

也可以看看:

于 2010-05-19T22:10:56.073 回答
1

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

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

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

于 2010-05-18T20:20:58.823 回答
1

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

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

于 2010-05-25T15:04:53.983 回答