1

検索の結果を制限するために、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 から離れて別のものを探す必要があります。

4

1 に答える 1

3

StandardAnalyzerのすべての文字を小文字にしますTokenStream

これを試して:

Filter LE = new QueryWrapperFilter(new TermQuery(new Term(field, "ZZZOCB9X9Y".ToLowerInvariant())));
于 2013-06-04T18:13:33.453 に答える