私は個人的なプロジェクトで Lucene.Net を使用しており、ケースを処理する必要がありますが、同じタイプのクエリを使用して lucene が 2 つのケースを処理する良い方法が見つかりません。
基本的なクエリは、MultiFieldQueryParser を StandardAnalyzer と NumericRangedFilter と共に使用して、日付でフィルター処理します (日付は長い値として保存されます)。
問題は、空の検索文字列用とユーザーが検索文字列を入力するための 2 つの異なるクエリ パーサーを使用せずに、空の検索文字列をフィルターで処理することです。現在、空の文字列が使用されると、MultiFieldQueryParser は ParseException をスローします。
これを処理する最善の方法について何かアドバイスはありますか? それとも、これは Lucene または Lucene.Net の (意図的またはその他の) 欠陥ですか?
結果
クエリ文字列が空の場合はMatchAllDocsQueryを使用し、それ以外の場合は通常のクエリを使用しました。
また、NumericFields と NumericRangeFilter の使用を削除する必要がありました。クエリを使用しても結果が返されなかったためです。文字列と通常のRangeFilterを使用して、古い方法で日付範囲フィルターを実行することになりました。