Lucene.NET 版本 4.8 beta 大小写问题
Lucene.NET version 4.8 beta casing issue
我正在使用 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)
};
问题是用户总是写小写版本,并期望它能同时找到小写和大写。
正如@Peska 在评论中所写,这是在将文档(和数据)添加到 Lucene 时使用 StringField 而不是 TextField 的情况。
一旦我切换到使用 TextField,一切都按预期工作。
我正在使用 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)
};
问题是用户总是写小写版本,并期望它能同时找到小写和大写。
正如@Peska 在评论中所写,这是在将文档(和数据)添加到 Lucene 时使用 StringField 而不是 TextField 的情况。
一旦我切换到使用 TextField,一切都按预期工作。