【问题标题】:Equal Precedence View Collation CouchDB?等优先视图排序规则 CouchDB?
【发布时间】:2012-07-03 09:25:05
【问题描述】:

根据 CouchDBview collat​​ion 文档( http://wiki.apache.org/couchdb/View_collation),成员顺序确实很重要对于整理。我想知道是否有办法禁用这个属性,这样排序顺序就无关紧要了?我希望能够“搜索”我的视图,以便发出的文档满足该字段的所有键范围。

这里有更多关于视图整理的内容供您参考:CouchDB sorting and filtering in the same view

同样,如果可以设置 CouchDB,使得视图排序的顺序无关紧要,则用于 GET 请求的以下参数应该只发出 doc.phone_number == 的文档"ZZZZZZZ" ,而现在它发出落在前 3 个键范围内的文档,并完全忽略最后一个键。这是因为最后一个键在当前排序规则中的优先级最低。

开始键:[null,null,null,"ZZZZZZZ"],

结束键:["\ufff0","\ufff0","\ufff0","ZZZZZZZZ"],

示例映射函数

var map = 函数(文档){ /* //发出的键 1.名称 2. 地址 3. 年龄 3.电话号码 */ 发出([doc.name,doc.address,doc.num_age,doc.phone_number],doc._id) }

这可能吗,还是我必须创建多个视图才能执行此操作?使用多个视图似乎非常低效。

我读过 CouchDB-Lucene:(How to realize complex search filters in couchdb? Should I avoid temporary views?) 对复杂的搜索很有帮助,但在这种情况下似乎不适用。

【问题讨论】:

    标签: javascript couchdb collation couchapp couchbase


    【解决方案1】:

    使用多个视图并不是低效的,恰恰相反:拥有四个视图(姓名、地址、年龄和电话号码)不会比使用单个视图发送所有内容占用更多的时间或内存。这是在 CouchDB 中执行“WHERE field = value”查询的简单、直接、高效的方法。

    如果您实际上是在寻找“WHERE field = value AND field2 = value2”查询,那么 CouchDB 将无法帮助您,您需要使用 Lucene。

    您需要了解排序规则仅描述键的排序方式。即使您可以指定任意排序规则,您仍然必须处理 CouchDB 需要您为键定义顺序,并且只允许您查询连续范围的键的事实。这与多维范围查询不兼容。

    【讨论】:

    • 除了使用 CouchDB Lucene 之外,对于多字段查询,即“WHERE field = value AND field2 = value2”,我是否可以将单个视图的输出传递给另一个视图处理,这样多字段查询是由多个视图串行计算?
    • 您可以在客户端或在返回数据之前执行额外的过滤(使用list function)。但是,只有初始查询会从索引中受益,因此如果您有一百万个带有 field = value 的文档,数据库将不得不读取它们以提取带有 field2 = value2 的文档(即使只有其中两个)。
    猜你喜欢
    • 2012-12-13
    • 2011-12-26
    • 1970-01-01
    • 2021-07-02
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多