过滤RavenDB搜索结果

时间:2012-08-17 18:49:04

标签: ravendb

我有一个使用IRavenQueryable.Search方法返回有效搜索结果的查询。但是,我想通过.Where方法调用进一步过滤这些结果,以便搜索结果然后被过滤为仅包含具有匹配ProjectId的搜索结果。

我的对象结构是一组Project实体,每个实体都包含一组Issue实体。

我的索引创建问题搜索结果的投影,如下所示:

{Id,Key,Summary,Description,ProjectId,ProjectKey,Query}

Query属性是关键字搜索使用的对象[]。

当我运行关键字搜索时:

var results = session.Query()。AsProjection()。Search(x => x.Query,“some key word”);

我得到了正确的结果。但是当我尝试也应用Where方法时:

results = results.Where(i => i.ProjectId == SelectedProject.Id);

它不会过滤结果,而是包含匹配项目ID的所有其他结果。

在这种情况下,强制Linq或RavenDB的IRavenQueryable应用AND而不是OR的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

发布此问题后,我设法在stackoverflow上的其他地方找到答案。

以下是解决方案:

ravendb combining Search with Where

简而言之,Search方法提供了一个额外的可选参数[options],允许您指定搜索与查询中的其他where子句的组合方式。它默认为SearchOptions.Or,因此您需要将其显式设置为选项:SearchOptions.And。