我有类似的文件,
{_id:1,
name:"john"
}
{_id:2,
name:"john boss"
}
{_id:3,
name:"jim"
}
我必须搜索 john 存储在文档中的数据。假设,如果我搜索“john”,文档应该得到 _id:1 & _id:2 相关数据。请指导我得到结果。
如果有人提供解决方案,我将不胜感激。
我有类似的文件,
{_id:1,
name:"john"
}
{_id:2,
name:"john boss"
}
{_id:3,
name:"jim"
}
我必须搜索 john 存储在文档中的数据。假设,如果我搜索“john”,文档应该得到 _id:1 & _id:2 相关数据。请指导我得到结果。
如果有人提供解决方案,我将不胜感激。
我建议使用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
到您的请求中以获取每一行的完整文档。