CouchDB中的Like-condition

Fos*_*smo 5 javascript couchdb

我想在CouchDB中执行LIKE条件(SQL语法).如何才能做到这一点?LIKE条件将用于在浏览器中执行自动完成.

我想在输入字段中写"co"并获得结果Coffee,Couch,CouchDB等.

Chr*_*erg 9

在字符串的开头搜索字母非常容易.您只需要一个视图,将您要搜索的字符串作为键发出.假设用户输入存储在变量中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这样的全文搜索插件.