Class DefaultQueryCreator

  • All Implemented Interfaces:
    QueryCreator

    @Singleton
    @Named
    public class DefaultQueryCreator
    extends java.lang.Object
    implements QueryCreator
    A default QueryCreator constructs Lucene query for provided query text.

    By default wildcards are created such as query text matches beginning of the field value or beginning of the class/package name segment for NAMES field. But it can be controlled by using special markers:

    • * - any character
    • '^' - beginning of the text
    • '$' or '<' or ' ' end of the text
    For example:
    • junit - matches junit and junit-foo, but not foo-junit
    • *junit - matches junit, junit-foo and foo-junit
    • ^junit$ - matches junit, but not junit-foo, nor foo-junit
    • Field Detail

      • logger

        private final org.slf4j.Logger logger
    • Constructor Detail

      • DefaultQueryCreator

        public DefaultQueryCreator()
    • Method Detail

      • getLogger

        protected org.slf4j.Logger getLogger()
      • constructQuery

        public org.apache.lucene.search.Query constructQuery​(Field field,
                                                             SearchExpression expression)
                                                      throws org.apache.lucene.queryparser.classic.ParseException
        Description copied from interface: QueryCreator
        Constructs query by parsing the query string, using field as default field. This method should be use to construct queries (single term or phrase queries) against single field.
        Specified by:
        constructQuery in interface QueryCreator
        Returns:
        Throws:
        org.apache.lucene.queryparser.classic.ParseException - if query parsing is unsuccessful.
      • constructQuery

        public org.apache.lucene.search.Query constructQuery​(Field field,
                                                             java.lang.String query,
                                                             SearchType type)
                                                      throws org.apache.lucene.queryparser.classic.ParseException
        Description copied from interface: QueryCreator
        Constructs query by parsing the query string, using field as default field. This method should be use to construct queries (single term or phrase queries) against single field.
        Specified by:
        constructQuery in interface QueryCreator
        Returns:
        Throws:
        org.apache.lucene.queryparser.classic.ParseException - if query parsing is unsuccessful.
      • constructQuery

        @Deprecated
        public org.apache.lucene.search.Query constructQuery​(java.lang.String field,
                                                             java.lang.String query)
        Deprecated.
        Description copied from interface: QueryCreator
        Deprecated. Avoid it's use! Constructs query against single field, using it's "best effort" approach to perform parsing, but letting caller to apply it's (usually wrong) knowledge about how field is indexed.
        Specified by:
        constructQuery in interface QueryCreator
        Returns:
        query if successfully parsed, or null.
      • constructQuery

        public org.apache.lucene.search.Query constructQuery​(Field field,
                                                             IndexerField indexerField,
                                                             java.lang.String query,
                                                             SearchType type)
                                                      throws org.apache.lucene.queryparser.classic.ParseException
        Throws:
        org.apache.lucene.queryparser.classic.ParseException
      • legacyConstructQuery

        public org.apache.lucene.search.Query legacyConstructQuery​(java.lang.String field,
                                                                   java.lang.String query)
      • countTerms

        protected int countTerms​(IndexerField indexerField,
                                 java.lang.String query)