我认为这个问题还不够清楚;这是一个更新的直截了当的问题:
构建元搜索引擎时使用的常见架构是什么?是否有任何库可用于构建这种类型的搜索引擎?
我正在考虑构建一个“企业”类型的搜索引擎,其中索引数据可能来自专有(如 Autonomy 或 Google Box)或公共搜索引擎(如 Google Web 或 Yahoo Web)。
我认为这个问题还不够清楚;这是一个更新的直截了当的问题:
构建元搜索引擎时使用的常见架构是什么?是否有任何库可用于构建这种类型的搜索引擎?
我正在考虑构建一个“企业”类型的搜索引擎,其中索引数据可能来自专有(如 Autonomy 或 Google Box)或公共搜索引擎(如 Google Web 或 Yahoo Web)。
如果您查看Garlic (pdf),您会注意到它的架构足够通用并且可以适应元搜索引擎。
更新:
粗略的建筑草图是这样的:
+---------------------------+
| |
| Meta-Search Engine | +---------------+
| | | |
| +-------------------+ |---------| Configuration |
| | Query Processor | | | |
| | | | +---------------+
| +-------------------+ |
+-------------+-------------+
|
+----------+---------------+
+--+----------+-------------+ |
| | | |
| +-------+-------+ | |
| | Wrapper | | |
| | | | |
| +-------+-------+ | |
| | | |
| | | |
| +-------+--------+ | |
| | | | |
| | Search Engine | | |
| | | +-+
| +----------------+ |
+---------------------------+
描绘的部分是:
看看Lucene。
Apache Lucene 是一个完全用 Java 编写的高性能、全功能的文本搜索引擎库。它是一种适用于几乎所有需要全文搜索的应用程序的技术,尤其是跨平台的应用程序。
不完全是您正在寻找的东西,但我仍然建议检查Compass,它可能会给您一些想法。也许还有Hibernate Search。
更新:为了澄清,Compass 不是 ORM(也不是 Hibernate Search),它是一个面向搜索的 API,因为它试图抽象底层搜索引擎(Lucene),我建议看看它使用的一些结构:分析器,分析器过滤器、查询解析器等
Compass 建立在 Lucene 之上,简化了 Lucene 的常见使用模式,例如 google 风格的搜索 (...)
这个页面似乎列出了一些:
http://java-source.net/open-source/search-engines
我想这些 API 都将是相似的,因为它们采用查询字符串和一些选项,并返回结果集合。但是,选项和结果的确切类型可能会有所不同,因此我认为您需要某种适配器方法(例如)来统一对不同后端的访问。
如果您可以阅读 Objective-C 并希望查看“元搜索引擎”之类的工作示例,您可能需要查看 Google 的Vermilion框架的源代码。它使用支持非常流行的 OS X谷歌快速搜索框实用程序的引擎(这又很像QuickSilver。
该框架提供了为搜索过程添加插件后端的能力,并处理来自多个来源的结果的合并排序等。我想任何类型的联合搜索引擎的设计都将遵循类似的设计。