@Beta public class YqlParser extends Object implements Parser
This class must be kept in lockstep with VespaSerializer
.
Adding anything here will usually require a corresponding addition in
VespaSerializer.
Modifier and Type | Class and Description |
---|---|
(package private) static interface |
YqlParser.AddFeature |
private class |
YqlParser.AnnotationPropagator |
private static class |
YqlParser.ConnectedItem |
private static class |
YqlParser.SegmentWhen |
Modifier and Type | Field and Description |
---|---|
(package private) static String |
ACCENT_DROP |
private static String |
ACCENT_DROP_DESCRIPTION |
(package private) static String |
ALTERNATIVES |
(package private) static String |
AND_SEGMENTING |
private static String |
ANNOTATIONS |
private Deque<OperatorNode<?>> |
annotationStack |
private static String |
ASCENDING_HITS_ORDER |
(package private) static String |
BOUNDS |
(package private) static String |
BOUNDS_LEFT_OPEN |
(package private) static String |
BOUNDS_OPEN |
(package private) static String |
BOUNDS_RIGHT_OPEN |
private List<YqlParser.ConnectedItem> |
connectedItems |
(package private) static String |
CONNECTION_ID |
(package private) static String |
CONNECTION_WEIGHT |
(package private) static String |
CONNECTIVITY |
private Parsable |
currentlyParsing |
private static Integer |
DEFAULT_HITS |
private static Integer |
DEFAULT_OFFSET |
private static Integer |
DEFAULT_TARGET_NUM_HITS |
private static String |
DESCENDING_HITS_ORDER |
private com.yahoo.language.detect.Detector |
detector |
(package private) static String |
DISTANCE |
private Set<String> |
docTypes |
(package private) static String |
DOT_PRODUCT |
private ParserEnvironment |
environment |
(package private) static String |
EQUIV |
(package private) static String |
FILTER |
private static String |
FILTER_DESCRIPTION |
private List<VespaGroupingStep> |
groupingSteps |
(package private) static String |
HIT_LIMIT |
private Integer |
hits |
private Map<Integer,TaggableItem> |
identifiedItems |
(package private) static String |
IMPLICIT_TRANSFORMS |
private static String |
IMPLICIT_TRANSFORMS_DESCRIPTION |
private IndexFacts |
indexFacts |
private IndexFacts.Session |
indexFactsSession |
(package private) static String |
LABEL |
private String |
localSegmenterBackend |
private com.yahoo.component.Version |
localSegmenterVersion |
(package private) static String |
NEAR |
private static String |
NFKC |
private static ToolBox.QueryVisitor |
noEmptyTerms |
private static String |
NON_EMPTY |
(package private) static String |
NORMALIZE_CASE |
private static String |
NORMALIZE_CASE_DESCRIPTION |
private com.yahoo.language.process.Normalizer |
normalizer |
private Integer |
offset |
(package private) static String |
ONEAR |
(package private) static String |
ORIGIN |
private static String |
ORIGIN_DESCRIPTION |
(package private) static String |
ORIGIN_LENGTH |
(package private) static String |
ORIGIN_OFFSET |
(package private) static String |
ORIGIN_ORIGINAL |
(package private) static String |
PHRASE |
(package private) static String |
PREDICATE |
(package private) static String |
PREFIX |
private boolean |
queryParser |
(package private) static String |
RANGE |
(package private) static String |
RANK |
(package private) static String |
RANKED |
private static String |
RANKED_DESCRIPTION |
private boolean |
resegment |
(package private) static String |
SCORE_THRESHOLD |
private com.yahoo.language.process.Segmenter |
segmenter |
private static String |
SEGMENTER |
private static String |
SEGMENTER_BACKEND |
private static String |
SEGMENTER_VERSION |
private String |
segmenterBackend |
private com.yahoo.component.Version |
segmenterVersion |
(package private) static String |
SIGNIFICANCE |
private Sorting |
sorting |
static String |
SORTING_FUNCTION |
static String |
SORTING_LOCALE |
static String |
SORTING_STRENGTH |
(package private) static String |
STEM |
private static String |
STEM_DESCRIPTION |
(package private) static String |
SUBSTRING |
(package private) static String |
SUFFIX |
(package private) static String |
TARGET_NUM_HITS |
(package private) static String |
THRESHOLD_BOOST_FACTOR |
private Integer |
timeout |
(package private) static String |
UNIQUE_ID |
(package private) static String |
USE_POSITION_DATA |
private static String |
USE_POSITION_DATA_DESCRIPTION |
private static String |
USER_INPUT |
private static String |
USER_INPUT_ALLOW_EMPTY |
private static String |
USER_INPUT_DEFAULT_INDEX |
private static String |
USER_INPUT_GRAMMAR |
private static String |
USER_INPUT_LANGUAGE |
private static String |
USER_INPUT_RAW |
private static String |
USER_INPUT_SEGMENT |
private static String |
USER_QUERY |
private Query |
userQuery |
(package private) static String |
WAND |
(package private) static String |
WEAK_AND |
(package private) static String |
WEIGHT |
(package private) static String |
WEIGHTED_SET |
private Set<String> |
yqlSources |
private Set<String> |
yqlSummaryFields |
Constructor and Description |
---|
YqlParser(ParserEnvironment environment) |
private static final String DESCENDING_HITS_ORDER
private static final String ASCENDING_HITS_ORDER
private static final Integer DEFAULT_HITS
private static final Integer DEFAULT_OFFSET
private static final Integer DEFAULT_TARGET_NUM_HITS
private static final String ACCENT_DROP_DESCRIPTION
private static final String ANNOTATIONS
private static final String FILTER_DESCRIPTION
private static final String IMPLICIT_TRANSFORMS_DESCRIPTION
private static final String NFKC
private static final String NORMALIZE_CASE_DESCRIPTION
private static final String ORIGIN_DESCRIPTION
private static final String RANKED_DESCRIPTION
private static final String SEGMENTER_BACKEND
private static final String SEGMENTER
private static final String SEGMENTER_VERSION
private static final String STEM_DESCRIPTION
private static final String USE_POSITION_DATA_DESCRIPTION
private static final String USER_INPUT_ALLOW_EMPTY
private static final String USER_INPUT_DEFAULT_INDEX
private static final String USER_INPUT_GRAMMAR
private static final String USER_INPUT_LANGUAGE
private static final String USER_INPUT_RAW
private static final String USER_INPUT_SEGMENT
private static final String USER_INPUT
private static final String USER_QUERY
private static final String NON_EMPTY
public static final String SORTING_FUNCTION
public static final String SORTING_LOCALE
public static final String SORTING_STRENGTH
static final String ACCENT_DROP
static final String ALTERNATIVES
static final String AND_SEGMENTING
static final String BOUNDS
static final String BOUNDS_LEFT_OPEN
static final String BOUNDS_OPEN
static final String BOUNDS_RIGHT_OPEN
static final String CONNECTION_ID
static final String CONNECTION_WEIGHT
static final String CONNECTIVITY
static final String DISTANCE
static final String DOT_PRODUCT
static final String EQUIV
static final String FILTER
static final String HIT_LIMIT
static final String IMPLICIT_TRANSFORMS
static final String LABEL
static final String NEAR
static final String NORMALIZE_CASE
static final String ONEAR
static final String ORIGIN_LENGTH
static final String ORIGIN_OFFSET
static final String ORIGIN
static final String ORIGIN_ORIGINAL
static final String PHRASE
static final String PREDICATE
static final String PREFIX
static final String RANGE
static final String RANKED
static final String RANK
static final String SCORE_THRESHOLD
static final String SIGNIFICANCE
static final String STEM
static final String SUBSTRING
static final String SUFFIX
static final String TARGET_NUM_HITS
static final String THRESHOLD_BOOST_FACTOR
static final String UNIQUE_ID
static final String USE_POSITION_DATA
static final String WAND
static final String WEAK_AND
static final String WEIGHTED_SET
static final String WEIGHT
private final IndexFacts indexFacts
private final List<YqlParser.ConnectedItem> connectedItems
private final List<VespaGroupingStep> groupingSteps
private final Map<Integer,TaggableItem> identifiedItems
private final com.yahoo.language.process.Normalizer normalizer
private final com.yahoo.language.process.Segmenter segmenter
private final com.yahoo.language.detect.Detector detector
private final String localSegmenterBackend
private final com.yahoo.component.Version localSegmenterVersion
private Integer hits
private Integer offset
private Integer timeout
private Query userQuery
private Parsable currentlyParsing
private IndexFacts.Session indexFactsSession
private Sorting sorting
private String segmenterBackend
private com.yahoo.component.Version segmenterVersion
private boolean queryParser
private boolean resegment
private final Deque<OperatorNode<?>> annotationStack
private final ParserEnvironment environment
private static final ToolBox.QueryVisitor noEmptyTerms
public YqlParser(ParserEnvironment environment)
private void joinDocTypesFromUserQueryAndYql()
@NonNull private QueryTree buildTree(OperatorNode<?> filterPart)
private void populateLinguisticsAnnotations(OperatorNode<ExpressionOperator> filterExpression)
private void populateYqlSources(OperatorNode<?> filterArgs)
private void populateYqlSummaryFields(List<OperatorNode<ProjectOperator>> fields)
private void connectItems()
@NonNull private Item convertExpression(OperatorNode<ExpressionOperator> ast)
@NonNull private Item buildFunctionCall(OperatorNode<ExpressionOperator> ast)
private Item ensureNonEmpty(OperatorNode<ExpressionOperator> ast)
@NonNull private Item buildWeightedSet(OperatorNode<ExpressionOperator> ast)
@NonNull private Item buildDotProduct(OperatorNode<ExpressionOperator> ast)
@NonNull private Item buildPredicate(OperatorNode<ExpressionOperator> ast)
private void addFeatures(OperatorNode<ExpressionOperator> map, YqlParser.AddFeature item, long subqueryBitmap)
@NonNull private Item buildWand(OperatorNode<ExpressionOperator> ast)
@NonNull private WeightedSetItem fillWeightedSet(OperatorNode<ExpressionOperator> ast, OperatorNode<ExpressionOperator> arg, @NonNull WeightedSetItem out)
@NonNull private Item instantiatePhraseItem(String field, OperatorNode<ExpressionOperator> ast)
@NonNull private Item instantiatePhraseSegmentItem(String field, OperatorNode<ExpressionOperator> ast, boolean forcePhrase)
@NonNull private Item instantiateNearItem(String field, OperatorNode<ExpressionOperator> ast)
@NonNull private Item instantiateONearItem(String field, OperatorNode<ExpressionOperator> ast)
@NonNull private Item fetchUserQuery()
@NonNull private Item buildUserInput(OperatorNode<ExpressionOperator> ast)
private com.yahoo.language.Language decideParsingLanguage(OperatorNode<ExpressionOperator> ast, String wordData)
private String getStringContents(OperatorNode<ExpressionOperator> propertySniffer)
private void propagateUserInputAnnotations(OperatorNode<ExpressionOperator> ast, Item item)
@NonNull private Item parseUserInput(String grammar, String defaultIndex, String wordData, com.yahoo.language.Language language, boolean allowNullItem)
@NonNull private OperatorNode<?> parseYqlProgram()
private OperatorNode<?> fetchPipe(OperatorNode<?> toScan)
@NonNull private OperatorNode<?> fetchSorting(OperatorNode<?> ast)
@NonNull private OperatorNode<?> fetchOffsetAndHits(OperatorNode<?> ast)
@NonNull private OperatorNode<?> fetchSummaryFields(OperatorNode<?> ast)
private OperatorNode<?> fetchTimeout(OperatorNode<?> ast)
@NonNull private static String fetchFieldRead(OperatorNode<ExpressionOperator> ast)
@NonNull private IntItem buildGreaterThanOrEquals(OperatorNode<ExpressionOperator> ast)
@NonNull private IntItem buildLessThanOrEquals(OperatorNode<ExpressionOperator> ast)
@NonNull private IntItem buildGreaterThan(OperatorNode<ExpressionOperator> ast)
@NonNull private IntItem buildLessThan(OperatorNode<ExpressionOperator> ast)
@NonNull private IntItem buildEquals(OperatorNode<ExpressionOperator> ast)
@NonNull private String fetchConditionIndex(OperatorNode<ExpressionOperator> ast)
private static String getNumberAsString(OperatorNode<ExpressionOperator> ast)
@NonNull private static String fetchConditionWord(OperatorNode<ExpressionOperator> ast)
private static boolean isIndexOnLeftHandSide(OperatorNode<ExpressionOperator> ast)
@NonNull private CompositeItem buildAnd(OperatorNode<ExpressionOperator> ast)
@NonNull private CompositeItem buildOr(OperatorNode<ExpressionOperator> spec)
@NonNull private CompositeItem buildWeakAnd(OperatorNode<ExpressionOperator> spec)
@NonNull private CompositeItem buildRank(OperatorNode<ExpressionOperator> spec)
@NonNull private CompositeItem convertVarArgs(OperatorNode<ExpressionOperator> ast, int argIdx, @NonNull CompositeItem out)
private void convertVarArgsAnd(OperatorNode<ExpressionOperator> ast, int argIdx, AndItem outAnd, NotItem outNot)
@NonNull private Item buildTermSearch(OperatorNode<ExpressionOperator> ast)
@NonNull private Item buildRegExpSearch(OperatorNode<ExpressionOperator> ast)
@NonNull private Item buildRange(OperatorNode<ExpressionOperator> spec)
@NonNull private IntItem instantiateRangeItem(List<OperatorNode<ExpressionOperator>> args, OperatorNode<ExpressionOperator> spec)
private Number getBound(OperatorNode<ExpressionOperator> bound)
@NonNull private Item instantiateLeafItem(String field, OperatorNode<ExpressionOperator> ast)
@NonNull private Item instantiateCompositeLeaf(String field, OperatorNode<ExpressionOperator> ast)
private Item instantiateWordAlternativesItem(String field, OperatorNode<ExpressionOperator> ast)
@NonNull private Item instantiateEquivItem(String field, OperatorNode<ExpressionOperator> ast)
@NonNull private Item instantiateWordItem(String field, OperatorNode<ExpressionOperator> ast, Class<?> parent)
@NonNull private Item instantiateWordItem(String field, OperatorNode<ExpressionOperator> ast, Class<?> parent, YqlParser.SegmentWhen segmentPolicy)
@NonNull private Item instantiateWordItem(String field, String rawWord, OperatorNode<ExpressionOperator> ast, Class<?> parent, YqlParser.SegmentWhen segmentPolicy, boolean exactMatch, com.yahoo.language.Language language)
private boolean shouldResegmentWord(String field, boolean fromQuery)
@NonNull private TaggableItem resegment(String field, OperatorNode<ExpressionOperator> ast, String wordData, boolean fromQuery, Class<?> parent, com.yahoo.language.Language language)
private boolean phraseArgumentSupported(Class<?> parent)
private void prepareWord(String field, OperatorNode<ExpressionOperator> ast, boolean fromQuery, WordItem wordItem)
@NonNull private <T extends TaggableItem> T leafStyleSettings(OperatorNode<?> ast, @NonNull T out)
private Integer getCappedRangeSearchParameter(OperatorNode<?> ast)
@Beta public boolean isQueryParser()
@Beta public void setQueryParser(boolean queryParser)
@Beta public void setUserQuery(@NonNull Query userQuery)
@Beta public List<VespaGroupingStep> getGroupingSteps()
public Integer getOffset()
public Integer getHits()
public Integer getTimeout()
public Sorting getSorting()
private static void assertHasOperator(OperatorNode<?> ast, Class<? extends Operator> expectedOperatorClass)
private static void assertHasOperator(OperatorNode<?> ast, Operator expectedOperator)
private static void assertHasFunctionName(OperatorNode<?> ast, String expectedFunctionName)
private static void addItems(OperatorNode<ExpressionOperator> ast, WeightedSetItem out)
private static void addStringItems(OperatorNode<ExpressionOperator> ast, WeightedSetItem out)
private static void addLongItems(OperatorNode<ExpressionOperator> ast, WeightedSetItem out)
private void wordStyleSettings(OperatorNode<ExpressionOperator> ast, WordItem out)
@NonNull private String getIndex(OperatorNode<ExpressionOperator> operatorNode)
private Substring getOrigin(OperatorNode<ExpressionOperator> ast)
private static <T> T getMapValue(String mapName, Map<?,?> map, String key, Class<T> expectedValueClass)
private <T> T getAnnotation(OperatorNode<?> ast, String key, Class<T> expectedClass, T defaultValue, String description)
private <T> T getAnnotation(OperatorNode<?> ast, String key, Class<T> expectedClass, T defaultValue, String description, boolean considerParents)
private static IllegalArgumentException newUnexpectedArgumentException(Object actual, Object... expected)
String getSegmenterBackend()
com.yahoo.component.Version getSegmenterVersion()
Copyright © 2018. All rights reserved.