PouchDB快速搜索是否会查找部分匹配?

时间:2016-06-14 22:56:31

标签: pouchdb

我已将PouchDB-Quick-Search插件集成到我的项目中。搜索功能工作正常,但似乎只有我包含我知道的整个术语(在测试期间)在数据库中。部分术语似乎没有返回任何结果,并且API不会引发任何错误。

searchInputInfo变量基于用户输入。

 DTDB.search({
        query: searchInputInfo,
        fields: ['type', 'description', 'notes'],
        include_docs: true,
        highlighting: true})
.then(function (result) {
}).catch(function (error){
});

最后,每当我加入' build'选项,搜索根本不起作用。

提前感谢您的任何帮助。

1 个答案:

答案 0 :(得分:1)

来自文档:

  

自动建议和前缀搜索

     

虽然pouchdb-quick-search插件没有提供   前缀/自动提示支持,您可以在PouchDB中轻松完成   本身使用allDocs()

     

只需创建ID等于您要搜索的内容的文档,   然后使用startkey / endkey加上特殊的高unicode字符\uffff进行搜索:

pouch.bulkDocs([
    {_id: 'marin'},
    {_id: 'mario'},
    {_id: 'marth'},
    {_id: 'mushroom'},
    {_id: 'zelda'}
 ]).then(function () { 
   return pouch.allDocs({
     startkey: 'mar',
     endkey: 'mar\uffff'
   });
 });
  

这将返回以'mar'开头的所有文档,在本例中为'marin''mario''marth'

     

它是如何工作的?好吧,在PouchDB和CouchDB中,文档ID是sorted lexiocographically,因此是\uffff技巧。

     

请注意,要处理大写/小写,您必须插入   _id已经小写的文档,然后使用搜索   小写字母也是如此。

     

注意:您也可以使用map/reduce queries完成此操作   原理是一样的(包括\uffff技巧)。然而   性能可能比allDocs()差,因为您正在使用   二级指数而非主要指数。