public Query visit()

in src/java/com/twitter/search/earlybird/queryparser/EarlybirdLuceneQueryVisitor.java [384:616]


  public Query visit(final SearchOperator op) throws QueryParserException {
    final Query query;
    SearchOperator.Type type = op.getOperatorType();

    switch (type) {
      case TO:
        query = visitToOperator(op);
        break;

      case FROM:
        query = visitFromOperator(op);
        break;

      case FILTER:
        query = visitFilterOperator(op);
        break;

      case INCLUDE:
        query = visitIncludeOperator(op);
        break;

      case EXCLUDE:
        query = visitExcludeOperator(op);
        break;

      case LANG:
        query = visitLangOperator(op);
        break;

      case SOURCE:
        query = visitSourceOperator(op);
        break;

      case SMILEY:
        query = visitSmileyOperator(op);
        break;

      case DOCVAL_RANGE_FILTER:
        query = visitDocValRangeFilterOperator(op);
        break;

      case CACHED_FILTER:
        query = visitCachedFilterOperator(op);
        break;

      case SCORE_FILTER:
        query = visitScoredFilterOperator(op);
        break;

      case SINCE_TIME:
        query = visitSinceTimeOperator(op);
        break;

      case UNTIL_TIME:
        query = visitUntilTimeOperator(op);
        break;

      case SINCE_ID:
        query = visitSinceIDOperator(op);
        break;

      case MAX_ID:
        query = visitMaxIDOperator(op);
        break;

      case GEOLOCATION_TYPE:
        query = visitGeoLocationTypeOperator(op);
        break;

      case GEOCODE:
        query = visitGeocodeOperator(op);
        break;

      case GEO_BOUNDING_BOX:
        query = visitGeoBoundingBoxOperator(op);
        break;

      case PLACE:
        query = visitPlaceOperator(op);
        break;

      case LINK:
        // This should never be called - the Link visitor (visitor(Link link)) should be.
        query = visitLinkOperator(op);
        break;

      case ENTITY_ID:
        query = visitEntityIdOperator(op);
        break;

      case FROM_USER_ID:
        query = visitFromUserIDOperator(op);
        break;

      case IN_REPLY_TO_TWEET_ID:
        query = visitInReplyToTweetIdOperator(op);
        break;

      case IN_REPLY_TO_USER_ID:
        query = visitInReplyToUserIdOperator(op);
        break;

      case LIKED_BY_USER_ID:
        query = visitLikedByUserIdOperator(op);
        break;

      case RETWEETED_BY_USER_ID:
        query = visitRetweetedByUserIdOperator(op);
        break;

      case REPLIED_TO_BY_USER_ID:
        query = visitRepliedToByUserIdOperator(op);
        break;

      case QUOTED_USER_ID:
        query = visitQuotedUserIdOperator(op);
        break;

      case QUOTED_TWEET_ID:
        query = visitQuotedTweetIdOperator(op);
        break;

      case DIRECTED_AT_USER_ID:
        query = visitDirectedAtUserIdOperator(op);
        break;

      case CONVERSATION_ID:
        query = visitConversationIdOperator(op);
        break;

      case COMPOSER_SOURCE:
        query = visitComposerSourceOperator(op);
        break;

      case RETWEETS_OF_TWEET_ID:
        query = visitRetweetsOfTweetIdOperator(op);
        break;

      case RETWEETS_OF_USER_ID:
        query = visitRetweetsOfUserIdOperator(op);
        break;

      case LINK_CATEGORY:
        query = visitLinkCategoryOperator(op);
        break;

      case CARD_NAME:
        query = visitCardNameOperator(op);
        break;

      case CARD_DOMAIN:
        query = visitCardDomainOperator(op);
        break;

      case CARD_LANG:
        query = visitCardLangOperator(op);
        break;

      case HF_TERM_PAIR:
        query = visitHFTermPairOperator(op);
        break;

      case HF_PHRASE_PAIR:
        query = visitHFTermPhrasePairOperator(op);
        break;

      case PROXIMITY_GROUP:
        Phrase phrase = new Phrase(
            Lists.transform(op.getOperands(),
                            s -> NormalizerHelper.normalizeWithUnknownLocale(
                                s, EarlybirdConfig.getPenguinVersion())));

        query = visit(phrase, true);
        break;

      case MULTI_TERM_DISJUNCTION:
        query = visitMultiTermDisjunction(op);
        break;

      case CSF_DISJUNCTION_FILTER:
        query = visitCSFDisjunctionFilter(op);
        break;

      case SAFETY_EXCLUDE:
        query = visitSafetyExclude(op);
        break;

      case SPACE_ID:
        query = visitSpaceId(op);
        break;

      case NAMED_ENTITY:
        query = visitNamedEntity(op);
        break;

      case NAMED_ENTITY_WITH_TYPE:
        query = visitNamedEntityWithType(op);
        break;

      case MIN_FAVES:
      case MIN_QUALITY_SCORE:
      case MIN_REPLIES:
      case MIN_RETWEETS:
      case MIN_REPUTATION:
        query = visitMinFeatureValueOperator(type, op);
        break;

      case FEATURE_VALUE_IN_ACCEPT_LIST_OR_UNSET:
        query = visitFeatureValueInAcceptListOrUnsetFilterOperator(op);
        break;

      case NEAR:
      case RELATED_TO_TWEET_ID:
      case SINCE:
      case SITE:
      case UNTIL:
      case WITHIN:
      case WITHIN_TIME:
        query = createUnsupportedOperatorQuery(op);
        break;

      case NAMED_CSF_DISJUNCTION_FILTER:
      case NAMED_MULTI_TERM_DISJUNCTION:
        query = logAndThrowQueryParserException(
            "Named disjunction operator could not be converted to a disjunction operator.");
        break;

      default:
        query = logAndThrowQueryParserException("Unknown operator " + op.toString());
    }

    return negateQueryIfNodeNegated(op, query);
  }