【发布时间】:2019-06-03 13:28:07
【问题描述】:
我正在使用 Lucene.NET 版本 4.8(测试版)在我正在做的解决方案中执行小搜索任务,但在搜索不区分大小写时遇到问题。我知道 Lucene 不区分大小写,但是在使用 StandardAnalyzer 时,它应该小写存储的数据(根据此处的文档 StandardAnalyzer),只要您确保查询正确完成。
所以知道我在这里做错了什么吗?我将数据“Kirsten”存储在 4 个不同文档的字段中,搜索(小写)“kirsten”时没有命中,但在搜索“Kirsten”时,我得到了预期的 4。
这是我的查询代码:
query = query.ToLowerInvariant();
BooleanQuery q = new BooleanQuery {
new BooleanClause(new WildcardQuery(new Term(FieldNames.Name, query + WildcardQuery.WILDCARD_STRING)), Occur.SHOULD),
new BooleanClause(new WildcardQuery(new Term("mt-year", query)), Occur.SHOULD),
new BooleanClause(new WildcardQuery(new Term("mt-class", query + WildcardQuery.WILDCARD_STRING)), Occur.SHOULD)
};
问题是用户总是写小写版本,并期望它找到小写和大写。
【问题讨论】:
-
您必须向我们展示您是如何创建文档的。您使用的是
TextField还是StringField?检查这个答案:stackoverflow.com/a/32011823/7225096 -
这似乎确实是问题所在!我用的是StringField,看来我应该用TextField!我似乎已经很久没有使用 Lucene.NET 了!谢谢!
标签: lucene.net