検索の結果を制限するために、Lucene.Net でフィルターを作成しました。私は非常に奇妙な問題に遭遇しています。フィルターはテキスト値では機能しませんが、数値で機能します。
例えば:
以下のような Number 値でフィルターを作成している場合。それは完全に機能しています。
String field = "id";
Filter LE= new QueryWrapperFilter(new TermQuery( new Term(field, "1234567")));
indexSearcher.Search(QueryMaker(searchString, searchfields), LE, coll);
ただし、テキストを含む値を指定すると
String field = "id";
Filter LE = new QueryWrapperFilter(new TermQuery(new Term(field, "ZZZOCB9X9Y")));
indexSearcher.Search(QueryMaker(searchString, searchfields), LE, coll);
それは失敗しています。結果はレコードを表示していません。
誰かが私に問題を説明できますか。また、この主張をするために何度もテストしました。いくつかのフォーラムで、Lucene バージョン 3 未満の Term Query でおそらくこの問題が発生することを読みました。ただし、バージョンを 3.0.3 に変更しましたが、エラーは引き続き発生します。プログラムでフィルターを機能させる必要があります。そうでなければ、Lucene から離れて別のものを探す必要があります。