Я ищу в Lucene с оператором "равно", реализованным как:
return new TermQuery(new Term(getName(), getValue()));
для вейла, как: customerID: YADA-UT-08ec5de9-8813-4361-be88-55695ddfaa00
Это работает.
НО, если я использую оператор "in", реализованный с помощью BooleanQuery, как;
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.
Любая подсказка?
РЕДАКТИРОВАТЬ: Что странно в том, что:
- это работает с "in" (логический запрос): 25c20c21-bd88-4a6d-aa02-209b5fb6fb11
- это не работает с ним: YADA-UT-08ec5de9-8813-4361-be88-55695ddfaa00
Решение найдено: слова люцены были проиндексированы в нижнем регистре:)