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

时间:2011-07-16 12:23:06

标签: 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.lastName.match(/.*?knopf.*?/i)) ) {

    // Dynamic sort
    emit(doc.lastName, doc);
  }
}

但是到处写的是你必须避免临时视图。有没有更好的办法?我应该在运行时按需保存这些搜索吗?

由于

1 个答案:

答案 0 :(得分:4)

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

但是,您将无法获得“包含”搜索。 (您可以获得完全匹配和“以”开头“匹配,但这不是您的示例所示)如果您需要临时查询,则应认真考虑couchdb-lucene

相关问题