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