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