我试图搜索几个字段,它工作正常,除非我使用术语“是”。在这种情况下,lucene只会忽略该字段。如果我做了如下所示的操作,我会得到正确的结果,“查询”对象显示为“+ flag:bf + type:cgo”。如果我将标志或类型术语中的任何一个设置为“是”,那么搜索的一部分将被忽略。 例如,如果我将queryString设置为“flag:\”BE \“并键入:\”CGO \“”查询对象将显示为:“+ type:cgo”,我会得到更多的点击。 “类型”也是如此 - 如果我在最后一个例子中将“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());
谢谢。使用关键字分析器而不是标准分析器解决了这个问题。 –