Query query = parseContext.indexCache().queryParserCache().get(qpSettings);
if (query != null) {
return query;
}
MapperQueryParser queryParser;
if (qpSettings.fields() != null) {
if (qpSettings.fields().size() == 1) {
qpSettings.defaultField(qpSettings.fields().get(0));
queryParser = parseContext.singleQueryParser(qpSettings);
} else {
qpSettings.defaultField(null); // reset defaultField when using multi query parser
queryParser = parseContext.multiQueryParser(qpSettings);
}
} else {
queryParser = parseContext.singleQueryParser(qpSettings);
}
try {
query = queryParser.parse(qpSettings.queryString());
query.setBoost(qpSettings.boost());
query = optimizeQuery(fixNegativeQueryIfNeeded(query));
parseContext.indexCache().queryParserCache().put(qpSettings, query);
return query;
} catch (ParseException e) {