我认为问题不够明确;这是一个直接更新的问题:
构建元搜索引擎时常用的架构是什么?是否有可用于构建此类搜索引擎的库?
我正在寻找构建“企业”类型的搜索引擎,其中索引数据可能来自专有(如Autonomy或Google Box)或公共搜索引擎(如Google Web或Yahoo Web)。
答案 0 :(得分:9)
如果你看一下Garlic (pdf),你会发现它的架构很通用,可以适应元搜索引擎。
更新:
粗略的建筑素描是这样的:
+---------------------------+
| |
| Meta-Search Engine | +---------------+
| | | |
| +-------------------+ |---------| Configuration |
| | Query Processor | | | |
| | | | +---------------+
| +-------------------+ |
+-------------+-------------+
|
+----------+---------------+
+--+----------+-------------+ |
| | | |
| +-------+-------+ | |
| | Wrapper | | |
| | | | |
| +-------+-------+ | |
| | | |
| | | |
| +-------+--------+ | |
| | | | |
| | Search Engine | | |
| | | +-+
| +----------------+ |
+---------------------------+
描述的部分是:
答案 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非常相似。
该框架提供了为搜索过程添加插件后端的功能,并处理合并排序来自多个来源的结果等。我认为任何类型的联合搜索引擎的设计都遵循类似的设计。