在我正在执行的解决方案中,我正在使用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)
};
问题是用户总是写小写版本,并希望它能同时找到小写和大写字母。
答案 0 :(得分:0)
@Peska在评论中写道,这是在将文档(和数据)添加到Lucene时使用StringField而不是TextField的情况。
一旦我改用TextField,一切都会按预期进行。