我在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/

10-13 03:34