1

我在 Lucene.Net 中做了一个过滤器来限制搜索结果。我遇到了一个非常奇怪的问题。过滤器不适用于文本值,而是使用数字值。

例如:

如果我正在制作一个带有数字值的过滤器,如下所示。它运行良好。

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);

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

有人可以解释我的问题。此外,我已经对其进行了多次测试以提出此要求。我在一些论坛上读到 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 回答