在couchdb中搜索所需的数据

时间:2012-04-27 13:26:39

标签: couchdb

我有像

这样的文件
{_id:1,
name:"john"
}
{_id:2,
name:"john boss"
}
{_id:3,
name:"jim"
}

我必须搜索john存储在文档中的数据。假设,如果我搜索“john”文件应该_id:1& _id:2个相关数据。请指导我获得结果。

如果有人提供解决方案,我感激不尽。

1 个答案:

答案 0 :(得分:0)

我建议CouchDB view向您显示"name字段中的所有“字词”。

function(doc) {
    // map function: _design/example/_view/names

    if(!doc.name) // Optionally do more testing for doc type, etc. here.
        return

    // Emit one row per word in the name field (first name, last name, etc.).
    var words = doc.name.split(/\s+/)
    for(var i = 0; i < words.length; i++)
        emit(words[i].toLowerCase(), doc._id)
}

现在,如果您查询/db/_design/example/_view/names?key="john",您将获得两行:一行用于doc id 1,另一行用于id 2.我还添加了一个转换为小写,因此搜索“john”将匹配名为的人“约翰”。

可能是重复:多次列出相同的文档ID,例如{"name":"John John"};但是你可以保证所有重复的行都是相邻的。

您还可以在请求中添加?include_docs=true以获取每行的完整文档。