in indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java [116:156]
public Query constructQuery(String field, String query) {
Query result;
if (MinimalArtifactInfoIndexCreator.FLD_GROUP_ID_KW.getKey().equals(field)
|| MinimalArtifactInfoIndexCreator.FLD_ARTIFACT_ID_KW.getKey().equals(field)
|| MinimalArtifactInfoIndexCreator.FLD_VERSION_KW.getKey().equals(field)
|| JarFileContentsIndexCreator.FLD_CLASSNAMES_KW.getKey().equals(field)) {
// these are special untokenized fields, kept for use cases like TreeView is (exact matching).
result = legacyConstructQuery(field, query);
} else {
QueryParser qp = new QueryParser(field, new NexusAnalyzer());
// small cheap trick
// if a query is not "expert" (does not contain field:val kind of expression)
// but it contains star and/or punctuation chars, example: "common-log*"
if (!query.contains(":")) {
if (query.contains("*") && query.matches(".*(\\.|-|_).*")) {
query = query.toLowerCase()
.replaceAll("\\*", "X")
.replaceAll("\\.|-|_", " ")
.replaceAll("X", "*");
}
}
try {
result = qp.parse(query);
} catch (ParseException e) {
getLogger()
.debug("Query parsing with \"legacy\" method, we got ParseException from QueryParser: "
+ e.getMessage());
result = legacyConstructQuery(field, query);
}
}
if (getLogger().isDebugEnabled()) {
getLogger().debug("Query parsed as: " + result.toString());
}
return result;
}