Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Views 如何在couchdb中实现复杂的搜索过滤器?我应该避免临时的观点吗?_Views_Couchdb_Temporary - Fatal编程技术网

Views 如何在couchdb中实现复杂的搜索过滤器?我应该避免临时的观点吗?

Views 如何在couchdb中实现复杂的搜索过滤器?我应该避免临时的观点吗?,views,couchdb,temporary,Views,Couchdb,Temporary,我想在网格中管理我的用户实体。我想对它们进行排序,并为每一列设置一个搜索过滤器 我的动态生成的临时视图工作正常: function(doc){ if(doc.type === 'User' && // Dynamic filters: WHERE firstName LIKE '%jim%' AND lastName LIKE '%knopf%' (doc.firstName.match(/.*?jim.*?/i) && doc.l

我想在网格中管理我的用户实体。我想对它们进行排序,并为每一列设置一个搜索过滤器

我的动态生成的临时视图工作正常:

function(doc){
  if(doc.type === 'User' && 
    // Dynamic filters: WHERE firstName LIKE '%jim%' AND lastName LIKE '%knopf%'
    (doc.firstName.match(/.*?jim.*?/i) && 
    doc.lastName.match(/.*?knopf.*?/i)) ) {

    // Dynamic sort
    emit(doc.lastName, doc);
  }
}
但是任何地方都写着你必须避免临时的观点。有更好的办法吗?我应该在运行时按需保存这些搜索吗


谢谢

您绝对不应该使用临时视图,因为每次查询临时视图时都必须重新计算它们。(这是一个非常“昂贵”的过程)当您提前知道要搜索的字段时,存储视图是完美的。(它只构建一次索引,之后只进行增量更改)


但是,您将无法获取“包含”搜索。(你可以得到精确的匹配,并从“匹配开始”,但这不是你的例子显示)如果你需要特别的查询,你应该认真考虑。

你也可以尝试Cloudant最近发布的CyoRoad搜索-你是什么意思“重新计算每一次”?是否每次都会重新计算简单的SQL语句?也许我只需要一次这个复杂的视图,大多数情况下,SQL命令的速度会因为索引的存在而大大加快。这可以是主键,也可以是索引字段。与关系数据库的索引相比,CouchDB map/reduce索引要复杂一些,这给了它更大的灵活性。SQL语句“firstName(如“%jim%”和lastName(如“%knopf%”)”是否因索引而加快了速度?