Fos*_*smo 5 javascript couchdb
我想在CouchDB中执行LIKE条件(SQL语法).如何才能做到这一点?LIKE条件将用于在浏览器中执行自动完成.
我想在输入字段中写"co"并获得结果Coffee,Couch,CouchDB等.
在字符串的开头搜索字母非常容易.您只需要一个视图,将您要搜索的字符串作为键发出.假设用户输入存储在变量中q,则使用参数startkey=q和调用该视图endkey=q+"\ufff0".
这里的技巧是将最高可能的Unicode字符附加到搜索字符串.在排序顺序中,此字符串以其他任何内容开头q.(这比@titanoboa建议的解决方案更容易实现,您需要"增加"用户输入的最后一个字母.)
如果您还希望能够在字符串中间找到单词(例如,键入"co"时的"The Colbert Report"),您可以使用如下视图:
function(doc) {
if (doc.title) {
var words = {};
doc.title.replace(/\w+/g, function(word) {
words[word.toLowerCase()] = true;
});
for (w in words) {
emit(w, doc);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当然这只适用于短串.要在较长的文本中搜索,您应该查看像couchdb-lucene这样的全文搜索插件.