我在lucene中使用"equals“运算符进行搜索,实现方式如下:
return new TermQuery(new Term(getName(), getValue()));对于像这样的vale : customerID:YADA-UT-08ec5de9-8813-4361-be88-55695ddfaa00
这是有效的。
但是,如果我使用一个用BooleanQuery实现的"in“运算符,比如;
final BooleanQuery booleanQuery = new BooleanQuery();
for (final String aValue : value) {
booleanQuery.add(new TermQuery(new Term(getName(), aValue)), BooleanClause.Occur.SHOULD);
}它找不到任何使用YADA-UT 08ec5de9-8813-4361-be88-55695ddfaa00的客户
经过大量测试后,我认为'YADA-UT-08ec5de9-8813-4361-be88-55695ddfaa00‘或破折号的长度可能是问题所在。(使用BooleanQuery时,我使用token将其保存在db中)。
有什么线索吗?
编辑:奇怪的是:-这是使用"in“(布尔查询):25c20c21-bd88-4a6d-aa02-209b5fb6fb11 -这不是使用它:YADA-ut5de9-8813-4361-be88-55695ddfaa00
找到的解决方案: lucene单词被索引为小写:)
发布于 2010-06-04 03:34:17
对我来说很奇怪的解决方案,但是……就是这样:)
lucene中的单词被索引为小写:)
https://stackoverflow.com/questions/2326089
复制相似问题