2016-06-14 42 views
1

我已将PouchDB-Quick-Search插件集成到我的项目中。搜索功能工作正常,但似乎只有当我在数据库中包含整个术语(在测试期间)时才是如此。部分术语似乎不会返回任何结果,并且API不会引发任何错误。PouchDB快速搜索寻找部分匹配吗?

searchInputInfo变量基于用户输入。

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

最后,只要我包含“构建”选项,搜索就根本不起作用。

在此先感谢您的帮助。

回答

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 s已小写字母,然后搜索使用 小写字母以及。

注:您也可以做到这一点使用map/reduce queries,而 原理是一样的(包括\uffff招)。但是, 的性能可能会比allDocs()差,因为您使用的是辅助索引 而不是主索引。