Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CouchDB中的Like条件_Javascript_Couchdb - Fatal编程技术网

Javascript CouchDB中的Like条件

Javascript CouchDB中的Like条件,javascript,couchdb,Javascript,Couchdb,我想在CouchDB中执行一个类似的条件(SQL语法)。如何做到这一点?类似条件将用于在浏览器中执行自动完成 我想在输入字段中写“co”,然后得到咖啡、沙发、CouchDB等的结果。这不能单独使用CouchDB。最好的尝试是Lucene搜索引擎,它与CouchDB配合得很好。Lucene是专为全文搜索而设计的,这基本上就是您要查找的内容。下面是一些关于组合的说明。为了实现您的示例,您可以创建一个视图,其中字段作为键,相同的字段、整个文档或任何您想要的值。如果您使用参数startkey=“co”,

我想在CouchDB中执行一个类似的条件(SQL语法)。如何做到这一点?类似条件将用于在浏览器中执行自动完成


我想在输入字段中写“co”,然后得到咖啡、沙发、CouchDB等的结果。

这不能单独使用CouchDB。最好的尝试是Lucene搜索引擎,它与CouchDB配合得很好。Lucene是专为全文搜索而设计的,这基本上就是您要查找的内容。下面是一些关于组合的说明。

为了实现您的示例,您可以创建一个视图,其中字段作为键,相同的字段、整个文档或任何您想要的值。如果您使用参数
startkey=“co”,endkey=“cp”,inclusive\u end=false来查询视图,您将获得以“co”开头的键的所有条目


当然,这不如“LIKE”强大。

搜索字符串开头的字母非常容易。您只需要一个视图,该视图发出要搜索的字符串作为键。假设用户输入存储在变量
q
中,然后使用参数
startkey=q
endkey=q+“\ufff0”
调用该视图

这里的技巧是在搜索字符串中附加可能的最高Unicode字符。在排序顺序中,该字符串位于以
q
开头的任何其他字符串之后。(这比@titanoboa建议的解决方案更容易实现,后者需要“递增”用户输入的最后一个字母。)

如果您还希望能够在字符串中找到单词(例如“科尔伯特报告”),当您键入“Co”时,您可以使用这样的视图:

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);
    }
  }
}

当然,这仅适用于短字符串。要在较长的文本中搜索,您应该查看全文搜索附加组件,如。

为什么最高的Unicode字符
fff0
而不是
ffff
?@Jez这是个好问题,我不知道当时为什么写
\ufff0
。我想正确的代码点应该是
\u{10FFFF}
,但我还没有测试过。()