我正在存储文档——每个文档都有一个“标签”集合——就像这样。标签是用户定义的,可以是任何纯文本。
{
"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 将为它以前从未见过的查询生成一个“动态索引”。我可以看到,这可能会导致很多索引。
使用 Raven 实现此功能的最佳方法是什么?
[编辑]
这是我的 Linq,但我从 Raven 收到错误“不支持所有内容”
var result = from candidateAnnouncement in session.Query<FeedAnnouncement>()
where listOfRequiredLabels.All(
requiredLabel => candidateAnnouncement.Labels.Any(
candidateLabel => candidateLabel.Text == requiredLabel))
select candidateAnnouncement;
[编辑]
我有一个类似的问题,答案解决了这两个问题:Raven query returns 0 results for collection contains