Lucene 了解RavenDB';s Intersect函数与搜索和统计一起使用时

Lucene 了解RavenDB';s Intersect函数与搜索和统计一起使用时,lucene,ravendb,Lucene,Ravendb,由于result1等于result2,因此我假设这两种用法都是正确和等效的。一个有趣的事实是,RavenDB的statistics total结果只有在以与result2相同的方式构建查询时才是正确的。但是,有谁能详细解释一下,为什么内置的result1查询是错误的,或者是一种糟糕的做法,尽管结果是等效的?知道为什么统计总结果不起作用吗 result1 = query1 .Where(first filter) .Intersect()

由于result1等于result2,因此我假设这两种用法都是正确和等效的。一个有趣的事实是,RavenDB的statistics total结果只有在以与result2相同的方式构建查询时才是正确的。但是,有谁能详细解释一下,为什么内置的result1查询是错误的,或者是一种糟糕的做法,尽管结果是等效的?知道为什么统计总结果不起作用吗

result1 = query1
             .Where(first filter)
             .Intersect()
             .Search(second filter)
             .Search(third filter)
             .ToList();
被lucene解释为(第一个过滤器)相交((第二个过滤器)或(第三个过滤器))

result2 = query2.Where(first filter)
.Search(second filter, options:SearchOptions.And)
.Search(third filter).Search(third filter, options:SearchOptions.Or)
.ToList();

lucene将其解释为(第一个筛选器)和((第二个筛选器)或(第三个筛选器))

您需要显示实际的查询。注意,INTERSECT做的事情与AND非常不同。用于索引项匹配,INTERSECT用于文档匹配。通常,不要使用INTERSECT第一个查询是:“OrganizationType:Club INTERSECT(Name:(Foo)ShortName:(Foo)),第二个查询是“OrganizationType:Club and(Name:(Foo)ShortName:(Foo))”。我很想知道intersect函数是如何工作的,以及“匹配”是如何确定的?我找不到任何关于此的详细文档。INTERSECT正在根据RavenDB文档id进行匹配。如果每个文档有多个条目,则这是相关的。请参见此处的完整详细信息:
result2 = query2.Where(first filter)
.Search(second filter, options:SearchOptions.And)
.Search(third filter).Search(third filter, options:SearchOptions.Or)
.ToList();