过滤 RavenDB 搜索结果



我有一个查询,它使用 IRavenQueryable.Search 方法返回有效的搜索结果。 但是,我想通过 .where 方法调用,以便随后筛选搜索结果以仅包含具有匹配 ProjectId 的搜索结果。

我的对象结构是一组项目实体,每个实体都包含一组问题实体。

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

{id, key, summary, description, projectId, ProjectKey, query}

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

当我运行关键字搜索时:

VaR 结果 = 会话。查询()。AsProjection()。搜索(x => x.Query,"某个关键字");

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

结果 = 结果。其中(i => i.ProjectId == SelectedProject.Id);

它不会筛选结果,而是包括具有匹配项目 ID 的所有其他结果。

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

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

这是解决方案:

ravendb 将搜索与位置相结合

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

最新更新