Я пытаюсь найти пару полей, и все работает нормально, если я не использую термин «BE». В этом случае Lucene просто игнорирует поле. Если я делаю что-то вроде того, что показано ниже, я получаю правильные результаты, и объект «запрос» отображается как «+ flag: bf + type: cgo». Если я установлю флаг или термины типа «BE», эта часть поиска будет игнорироваться.
Например, если я установлю для queryString значение «flag: \» BE \ »AND type: \« CGO \ »« объект запроса будет показан как: «+ type: cgo», и я получу гораздо больше обращений. То же самое происходит для «типа» - если я изменю «CGO» в последнем примере на «BE», он будет проигнорирован. Я не пробовал все возможные комбинации из двух символов (но я пробовал много), но все работает, как ожидалось, кроме этой. Я не использую стоп-термины.
Спасибо,
Гена
String queryString = "flag:\"BF\" AND type:\"CGO\"";
QueryParser qp = new QueryParser(Version.LUCENE_30,
"type", new StandardAnalyzer(Version.LUCENE_30));
Query query = qp.parse(queryString);
IndexSearcher searcher = new IndexSearcher(reader.reopen());
TopDocs td = searcher.search(q, 5000);
logger.info("Found " + td.totalHits + " hits using " + query.toString() );