public Query constructQuery()

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;
    }