Postgres或CouchDB中的全文搜索? [英] Full-text search in Postgres or CouchDB?

查看:32
本文介绍了Postgres或CouchDB中的全文搜索?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我取了geonames.org,导入了他们所有地区的德国城市的所有数据。

如果我输入&Hamburg";,它会列出&Hamburg Center、汉堡机场等。该应用程序处于封闭的网络中,无法访问互联网,因此我无法访问geonames.orgweb服务,因此必须导入数据。:( 这座城市及其所有的区都是作为一个汽车配件来工作的。因此,每次击键都会导致XHR请求,依此类推。

现在我的客户问是否可以将世界上所有的数据都放在里面。最后,大约有5.000.000行,其中有45.000.000个替代名称等。

Postgres每次查询大约需要3秒,这使得自动完成不可用。

现在我想到了CouchDB,我已经使用过它了。我的问题:

我要发布";Ham";,并且我希望CouchDB获得以&Quot;Ham";开头的所有文档。如果我输入";Hamburg";,我希望它返回汉堡,依此类推。

CouchDB是适合它的数据库吗?您还能推荐哪些响应延迟低(可能在内存中)且数据集数以百万计的数据库?数据集不会定期更改,而是静电!

推荐答案

如果我没有理解错您的问题,您所需要的可能都已经构建在CouchDB中了。

  1. 要获取名称以例如开头的文档范围,请执行以下操作:"火腿"您可以使用request with a string rangestartkey="Ham"&endkey="Hamufff0"
  2. 如果您需要更全面的搜索,可以创建一个包含其他地名作为键的视图。因此,您可以再次使用上面的技术查询范围。

以下是实现此操作的视图函数:

function(doc) {
    for (var name in doc.places) {
        emit(name, doc._id);
    }
}

另请参阅CouchOne关于CouchDB typeahead and autocomplete search的博客文章以及关于CouchDB autocomplete的邮件列表上的此讨论。

这篇关于Postgres或CouchDB中的全文搜索?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆