0

強く型付けされたバージョンを使用していたのですが、柔軟性が不十分であるという問題が発生したため、柔軟性はありますがパフォーマンスが低下するAdvancedQuery.Lunceneに切り替えました。私は、低レベルのクエリエンジンは、対応するものよりも高速であるか、少なくとも同等のものであると考えていました。誰かがこれに光を当てることができますか?

ありがとう、スティーブン

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

HasPictureのクエリを実行するために経過した時間==true975

見つかった製品の総数:412352

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

watch.Stop();

Lucene7065でクエリを実行するために経過した時間

見つかった製品の総数:412352

4

2 に答える 2

1

標準のパフォーマンスベースラインから逸脱している場合は、パフォーマンスバトルを選択してください。私は、すぐに使える設定から始めて、データを収集し、測定し、すすぎ、そして繰り返します。許容できないパフォーマンスの低下が観察された場合は、観察に基づいてアクションを実行し、1つ変更して、データを収集し、測定します。したがって、答えは最初にOOB設定です。

于 2012-04-07T01:01:45.693 に答える
1

Itamarに感謝します。

問題は、LuceneQueryを使用するときにWhereEqualsを使用する場合のWhere句でした。

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