【问题标题】:Does PouchDB Quick Search look for partial matches?PouchDB 快速搜索是否会查找部分匹配项?
【发布时间】:2016-10-23 03:28:34
【问题描述】:

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

searchInputInfo 变量基于用户输入。

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

最后,每当我包含“构建”选项时,搜索根本不起作用。

提前感谢您的帮助。

【问题讨论】:

    标签: pouchdb


    【解决方案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 技巧。

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

    注意:您也可以使用map/reduce queries 来完成此操作,并且 原理是一样的(包括\uffff技巧)。但是,那 性能可能比allDocs() 差,因为您使用的是 二级索引而不是主索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 2017-03-02
      • 2023-03-17
      相关资源
      最近更新 更多