0

我问的原因是我一直在使用强类型版本,但遇到了它不够灵活的问题,所以我切换到了 AdvancedQuery.Luncene,它确实提供了灵活性,但性能有所下降。我在想较低级别的查询引擎会比它的对应部分或至少等效的要快。有人可以对此有所了解吗?

谢谢你,斯蒂芬

watch = Stopwatch.StartNew();
        result = s.Query<Product>()
            .Statistics(out stats)
            .Where(x => x.HasPicture == true)
            .ToArray();
watch.Stop();

执行 HasPicture 查询的时间 == true 975

找到的产品总数:412352

watch = Stopwatch.StartNew();
result = s.Advanced.LuceneQuery<Product>("Products_Index")
            .Statistics(out stats)
            .Where("HasPicture:(True)")
            .ToArray()
            ;

watch.Stop();

使用 Lucene 7065 执行查询所用的时间

找到的产品总数:412352

4

2 回答 2

1

当您偏离标准绩效基准时,选择绩效战。我将从开箱即用的设置开始,收集数据,测量,冲洗并重复。如果观察到不可接受的性能下降,然后根据您的观察采取行动,然后改变一件事,收集数据,测量......所以答案首先是 OOB 设置。

于 2012-04-07T01:01:45.693 回答
1

感谢伊塔马尔。

问题是 Where 子句,当使用 LuceneQuery 时使用 WhereEquals。

 result = s.Advanced.LuceneQuery<Product>("Products_Index")
                    .Statistics(out stats)
                    .WhereEquals("HasPicture", true)
                    .ToArray()
                    ;
于 2012-04-08T02:05:48.067 回答