私はいくつかのフィールドを検索しようとしていますが、用語 "BE"を使用しないと正常に動作します。この場合、luceneは単にフィールドを無視します。下に示すようなことをすれば正しい結果が得られ、 "照会"オブジェクトは "+ flag:bf + type:cgo"として表示されます。フラグまたはタイプ用語のいずれかを「BE」に設定すると、検索の一部は無視されます。 たとえば、queryStringを "flag:\" BE \ "AND type:\" CGO \ ""に設定した場合、クエリオブジェクトは "+ type:cgo"として表示され、より多くのヒットが得られます。 "type"にも同じことが起こります - 最後の例の "CGO"を "BE"に変更すると無視されます。私は可能なすべての2つの文字の組み合わせを試していない(しかし、私は多くを試してみました)が、このすべてを除いて期待どおりに動作します。私はストップタームを使用していません。Lucene QueryParserは検索用語 "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());
ありがとうございます。標準アナライザーではなくキーワードアナライザーを使用することで、この問題が解決されました。 –