4

ユーザー エンティティをグリッドで管理したいと考えています。それらを並べ替えたいのですが、各列に検索フィルターが必要です。

私の動的に生成された一時ビューは正常に動作します:

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);
  }
}

しかし、どこにでも一時的なビューを避ける必要があると書かれています。より良い方法はありますか?実行時にこれらの検索をオンデマンドで保存する必要がありますか?

ありがとう

4

1 に答える 1

4

クエリを実行するたびに一時ビューを再計算する必要があるため、絶対に一時ビューを使用しないでください。(これは非常に「費用のかかる」プロセスです) 保存されたビューは、検索するフィールドが事前にわかっている場合に最適です。(インデックスは 1 回作成され、その後は増分変更のみが行われます)

ただし、「含む」検索を取得することはできません。(正確な一致と「で始まる」一致を取得できますが、それはあなたの例が示すものではありません)アドホッククエリが必要な場合は、を真剣に検討する必要がありますchairdb-lucene

于 2011-07-16T14:41:27.843 に答える