私はドキュメントを保存しています-そして各ドキュメントにはこのような「ラベル」のコレクションがあります。ラベルはユーザー定義であり、任意のプレーンテキストにすることができます。
{
"FeedOwner": "4ca44f7d-b3e0-4831-b0c7-59fd9e5bd30d",
"MessageBody": "blablabla",
"Labels": [
{
"IsUser": false,
"Text": "Mine"
},
{
"IsUser": false,
"Text": "Incomplete"
}
],
"CreationDate": "2012-04-30T15:35:20.8588704"
}
ユーザーがラベルの任意の組み合わせを照会できるようにする必要があります。
"Mine" OR "Incomplete"
"Incomplete" only
or
"Mine" AND NOT "Incomplete"
これにより、次のようなRavenクエリが発生します。
Query: (FeedOwner:25eb541c\-b04a\-4f08\-b468\-65714f259ac2) AND (Labels,
Text:Mine) AND (Labels,Text:Incomplete)
私は、レイヴンがこれまでに見たことのないクエリに対して「動的インデックス」を生成することを理解しています。これでわかるように、これにより多くのインデックスが作成される可能性があります。
Ravenでこの機能を実現するための最良のアプローチは何でしょうか?
[編集]
これは私のLinqですが、Ravenから「すべてがサポートされていません」というエラーが表示されます。
var result = from candidateAnnouncement in session.Query<FeedAnnouncement>()
where listOfRequiredLabels.All(
requiredLabel => candidateAnnouncement.Labels.Any(
candidateLabel => candidateLabel.Text == requiredLabel))
select candidateAnnouncement;
[編集]
私は同様の質問をしました、そしてそれに対する答えは両方の質問を解決しました:レイヴンクエリはコレクションに0の結果を返します