1

我有类似的文件,

{_id:1,
name:"john"
}
{_id:2,
name:"john boss"
}
{_id:3,
name:"jim"
}

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

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

4

1 回答 1

0

我建议使用CouchDB 视图向您显示"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”将匹配名为“John”的人。

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

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

于 2012-04-28T04:06:07.693 回答