如何检查沙发基座中的视图键中的包含

时间:2014-01-09 15:15:53

标签: mapreduce couchdb couchbase membase

我有一个像

的观点
    function (doc, meta)
    {
    if(doc.Tenant)
    {
    emit([doc.Tenant.Id,doc.Tenant.User.Name],doc);
    }
    }

在此视图中,我希望所有值都属于Tenant.Id == 1和User.Name,其中包含“a”

我可以通过收集属于特定租户ID的所有租户数据在我的C#中搜索。 但我为每个租户提供了数百万的数据。所以需要在服务器端检查这一点。 这是否可以搜索。

1 个答案:

答案 0 :(得分:1)

我猜你想要能够在字符串中更改你要搜索的字母,不幸的是,对于这种类型的查询,couchbase不会是最好的。

如果它始终是您要搜索的字母'a',那么您可以执行这样的地图,然后查询ID。

function (doc, meta) {

  if(doc.Tenant) {
    var name = doc.Tenant.User.Name.toLowerCase();
    if(name.indexOf("a") > -1) {    
       emit(doc.Tenant.Id,null); 
    }
  } 
}

但是,如果您希望能够动态更改要在名称中搜索的字母或子字符串,那么您需要考虑类似elasticsearch(非常适合文本搜索)。 Couchbase有一个elasticsearch传输插件,它会自动复制到您的elasticsearch节点。

以下是关于ES和Couchbase的演示文稿

http://www.slideshare.net/Couchbase/using-elasticsearch-and-couchbase-together-to-build-large-scale-applications

安装和使用ES插件入门的文档

http://docs.couchbase.com/couchbase-elastic-search/

这是一篇很酷的教程,详细介绍了如何在ES数据之上添加GUI以便于过滤。

http://blog.jeroenreijn.com/2013/07/visitor-analysis-with-couchbase-elasticsearch.html