繁体   English   中英

为什么在Lucene.Net中,过滤器无法处理文本/字符串值?

[英]Why is filter not working with text/string values in Lucene.Net?

我在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以下版本的术语查询可能会出现此问题。 但是,我将版本更改为3.0.3,但错误仍然存​​在。 我非常需要程序中的过滤器才能工作。 否则,我将不得不离开Lucene并找到其他东西。

StandardAnalyzer将小写TokenStream所有字符。

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM