2

我想实现文本搜索引擎。特别是要索引的文档将是具有权重的术语列表。
查询是一个简单的术语列表。
搜索的输出应该是按相关性匹配(针对术语及其权重)排序的列表 我需要存储的数据很大!它不适合单个节点。所以最终的存储必须易于分发。

您会推荐哪种数据库存储?经过一些分析,我想在 Couchbase 和 Riak 之间进行选择。

[编辑] 您如何看待简单的关系数据库?他们已经有了一些不错的分发机制(例如:内置 Postgres 9)[/edit]

Riak 具有内置搜索功能,但据我所知,我不想使用它,因为我需要索引才能获得响应(而不是为每个查询计算它)。

另一方面,Couchbase 2“为 JSON 文档添加了二级索引。索引是通过视图创建的,然后可以查询。索引是均匀分布的。
这听起来对 Couchbase 来说是一个很大的好处

4

3 回答 3

2

回答“我可以/应该使用数据库来存储我的索引文档吗?”的一般基本问题。

是的。

这是一个相当普遍的模式。一些组织(为了保护无辜者而隐瞒名称)使用 Solr 作为索引和相关引擎,仅从搜索中返回主键,然后转身从数据库存储中检索实际文档。

然而,这种方法存在挑战;主要是为了使两个系统(solr 和 db)保持同步。Couchbase 使用其跨数据中心复制技术来保持 ElasticSearch 实例同步;Riak 2 刚刚发布并有效地为数据库的每个分片自动创建一个 Solr 索引。根据您的用例,两者都可以正常工作。此外,您显然可以使用队列等进行自己的同步。

两个数据库的更多详细信息,请访问

http://docs.couchbase.com/couchbase-elastic-search/ http://docs.basho.com/riak/latest/dev/advanced/search/

于 2014-09-14T23:38:11.430 回答
1

我使用了 ElasticSearch 和 CouchDB,效果很好。

于 2012-04-24T15:32:20.573 回答
1

我建议将Riak Search用于全文搜索,它非常强大,并且借鉴了Lucene的大部分优点,同时仍然具有透明的容错性、可复制性和可扩展性。如果您的数据不适合单个节点,它可能是最平衡的开源解决方案。

于 2012-05-15T16:38:22.437 回答