couchdb一个查询与LIKE AND EQUAL,或两个查询?

时间:2014-05-30 16:52:29

标签: javascript couchdb pouchdb

我是Couchdb的新手。

我已经创建了一个用于在我的产品上执行“类似SQL”的视图(键都是代码和描述字)。

function (doc) {
    if (doc.type === 'product') {
        var words = { };
        var text = doc.code + ' ' + doc.description;
        text.replace(/\w+/g, function(word) {
            words[word.toLowerCase()] = true;
        });
        for (var w in words) {
            emit(w, doc);
        }
    }
}

我的产品也属于类别。我想允许用户从给定的类别获取Productso,然后在该子集上应用LIKE

对产品类别执行第二个视图可以解决按类别筛选

问题

这是 couchdb方式这样做?

我看到的选项是:

  1. 构建名为 like_by_category 的视图,其中的键是复合[category,word]。

  2. 运行第一个视图按类别过滤,稍后按字词再次运行,然后手动连接两个结果集以查看两者的结果

  3. 任何绳索都可以帮助我摆脱这个洞!

    选项1只是理论,不知道它是否会让我轻松地进行分页。

    选项2也只是理论,但我不确定执行这两个视图运行的性能,特别是在运行http://www.pouchdb.com的移动设备上

1 个答案:

答案 0 :(得分:0)

  1. 在CouchDB上,如果您想进行全文搜索,那么您最好的选择是CouchDB Lucene plugin。分裂在空白区域的工作很紧张,但对于工作/作品/工作/工作等形态变化,特别是对于非英语语言,你需要一个真正的标记器。
  2. 在PouchDB上,有PouchDB Search插件,遗憾的是它目前效率不高,因为它将整个数据库读入内存。如果您只定位移动设备(我假设其意为“iOS和Android”),您应该使用WebSQL查看SQLite的FTS功能。这是some discussion of FTS and a live example