0

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

这里有一些关于视图排序的更多信息供您参考:CouchDBsorting 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 :(如何在 couchdb 中实现复杂的搜索过滤器?我应该避免临时视图吗?)将有助于复杂的搜索,但这似乎不适用于这种情况。

4

1 回答 1

0

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

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

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

于 2012-07-03T09:42:23.683 回答