由于 result1 等于 result2 ,我认为这两种用法都是正确且等效的。一个有趣的事实是,只有在以与 result2 相同的方式构建查询时,RavenDB的统计总结果才是正确的。但是,任何人都可以详细解释我为什么尽管结果相同,但 result1 中构建的查询是错误的还是不好的做法?知道为什么统计总结果不起作用吗?
result1 = query1
.Where(first filter)
.Intersect()
.Search(second filter)
.Search(third filter)
.ToList();
由lucene解释为(第一个过滤器)INTERSECT((第二个过滤器)OR(第三个过滤器))。
result2 = query2.Where(first filter)
.Search(second filter, options:SearchOptions.And)
.Search(third filter).Search(third filter, options:SearchOptions.Or)
.ToList();
由lucene解释为(第一个过滤器)AND((第二个过滤器)OR(第三个过滤器))。