我已将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'选项,搜索根本不起作用。
提前感谢您的任何帮助。
答案 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()
差,因为您正在使用 二级指数而非主要指数。