为什么filter不能在Lucene.Net中使用文本/字符串值?

我在Lucene.Net中制作了一个filter来限制搜索结果。 我遇到了一个非常奇怪的问题。 filter不使用文本值,但使用数字值。

例如:

如果我正在使用数字值进行过滤,如下所示。 它工作得很好。

String field = "id"; Filter LE= new QueryWrapperFilter(new TermQuery( new Term(field, "1234567"))); indexSearcher.Search(QueryMaker(searchString, searchfields), LE, coll); 

但是,如果我给出一个包含Text的值

 String field = "id"; Filter LE = new QueryWrapperFilter(new TermQuery(new Term(field, "ZZZOCB9X9Y"))); indexSearcher.Search(QueryMaker(searchString, searchfields), LE, coll); 

它失败了。 结果不显示任何记录。

有人可以解释我的问题。 另外,我已经多次测试过这个说法。 我在一些论坛上看到,3以下Lucene版本中的术语查询可能会出现此问题。 但是,我已将版本更改为3.0.3,但错误仍然存​​在。 我非常需要我的程序中的filter才能工作。 否则我将不得不离开Lucene并找到别的东西。

StandardAnalyzer将小写TokenStream所有字符。

试试这个:

 Filter LE = new QueryWrapperFilter(new TermQuery(new Term(field, "ZZZOCB9X9Y".ToLowerInvariant())));