我在lucene中搜索“ equals”运算符,其实现方式如下:
return new TermQuery(new Term(getName(), getValue()));
表示为:客户ID: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'或破折号的长度可能是问题。 (我使用令牌将其保留在db中)与BooleanQuery一起使用时。
有什么线索吗?
编辑:奇怪的是:
-这适用于“输入”(布尔查询):25c20c21-bd88-4a6d-aa02-209b5fb6fb11
-无法使用:YADA-UT-08ec5de9-8813-4361-be88-55695ddfaa00
找到的解决方案:lucene单词被索引为小写:)
最佳答案
对我来说奇怪的解决方案,但是...就是这样:)
lucene单词被索引为较低
案件 :)
关于java - lucene BooleanQuery等于/输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2326089/