我想在网格中管理我的用户实体。我想对它们进行排序,我希望每列都有一个搜索过滤器。
我动态生成的临时视图效果很好:
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);
}
}
但是到处写的是你必须避免临时视图。有没有更好的办法?我应该在运行时按需保存这些搜索吗?
由于
答案 0 :(得分:4)
您绝对应该不使用临时视图,因为每次查询时都必须重新计算。 (这是一个非常“昂贵”的过程)当您提前知道要搜索的字段时,存储的视图是完美的。 (它构建索引一次,之后只进行增量更改)
但是,您将无法获得“包含”搜索。 (您可以获得完全匹配和“以”开头“匹配,但这不是您的示例所示)如果您需要临时查询,则应认真考虑couchdb-lucene。