为什么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())));