Class QueryProcessor<T>
- Direct Known Subclasses:
- AccountQueryProcessor,- ChangeQueryProcessor,- GroupQueryProcessor,- ProjectQueryProcessor
Instances are one-time-use. Other singleton classes should inject a Provider rather than holding on to a single instance.
- 
Nested Class SummaryNested Classes
- 
Field SummaryFields
- 
Constructor SummaryConstructorsModifierConstructorDescriptionprotectedQueryProcessor(QueryProcessor.Metrics metrics, SchemaDefinitions<T> schemaDef, IndexConfig indexConfig, IndexCollection<?, T, ? extends Index<?, T>> indexes, IndexRewriter<T> rewriter, String limitField, IntSupplier userQueryLimit) 
- 
Method SummaryModifier and TypeMethodDescriptionprotected QueryOptionscreateOptions(IndexConfig indexConfig, int start, int pageSize, int pageSizeMultiplier, int limit, boolean allowIncompleteResults, Set<String> requestedFields) enforceVisibility(boolean enforce) Specify whether to enforce visibility by filtering out results that are not visible to the user.enforceVisibility(Predicate<T> pred) Invoked after the query was rewritten.protected abstract Stringintprotected intgetInitialPageSize(int queryLimit) protected IntSupplierbooleanCheck whether querying should be disabled.Query for entities that match a structured query.List<QueryResult<T>> Perform multiple queries in parallel.setAllowIncompleteResults(boolean allowIncompleteResults) setNoLimit(boolean isNoLimit) setRequestedFields(Set<String> fields) setStart(int n) setUserProvidedLimit(int n) Convenience method for API backward compatibility.setUserProvidedLimit(int n, boolean applyDefaultLimit) Set an end-user-provided limit on the number of results returned.
- 
Field Details- 
startprotected int start
 
- 
- 
Constructor Details- 
QueryProcessorprotected QueryProcessor(QueryProcessor.Metrics metrics, SchemaDefinitions<T> schemaDef, IndexConfig indexConfig, IndexCollection<?, T, ? extends Index<?, T>> indexes, IndexRewriter<T> rewriter, String limitField, IntSupplier userQueryLimit) 
 
- 
- 
Method Details- 
setStart
- 
enforceVisibilitySpecify whether to enforce visibility by filtering out results that are not visible to the user.Enforcing visibility may have performance consequences, as the index system may need to post-filter a large number of results to fill even a modest limit. If visibility is enforced, the user's queryLimitglobal capability is also used to bound the total number of results. If this capability is non-positive, this results in the entire query processor beingdisabled.- Parameters:
- enforce- whether to enforce visibility.
- Returns:
- this.
 
- 
setUserProvidedLimitConvenience method for API backward compatibility.
- 
setUserProvidedLimit@CanIgnoreReturnValue public QueryProcessor<T> setUserProvidedLimit(int n, boolean applyDefaultLimit) Set an end-user-provided limit on the number of results returned.Since this limit is provided by an end user, it may exceed the limit that they are authorized to use. This is allowed; the processor will take multiple possible limits into account and choose the one that makes the most sense. - Parameters:
- n- limit; zero or negative means no limit.
- applyDefaultLimit- Should the default limit be applied, if n invalid input: '<'= 0? For internal queries this should be false. For API endpoints this should be true.
- Returns:
- this.
 
- 
setNoLimit
- 
setAllowIncompleteResults@CanIgnoreReturnValue public QueryProcessor<T> setAllowIncompleteResults(boolean allowIncompleteResults) 
- 
setRequestedFields
- 
queryQuery for entities that match a structured query.- Parameters:
- query- the query.
- Returns:
- results of the query.
- Throws:
- QueryParseException
- See Also:
 
- 
queryPerform multiple queries in parallel.If querying is disabled, short-circuits the index and returns empty results. Callers that wish to distinguish this case from a query returning no results from the index may call isDisabled()themselves.- Parameters:
- queries- list of queries.
- Returns:
- results of the queries, one QueryResult per input query, in the same order as the input.
- Throws:
- QueryParseException
 
- 
createOptionsprotected QueryOptions createOptions(IndexConfig indexConfig, int start, int pageSize, int pageSizeMultiplier, int limit, boolean allowIncompleteResults, Set<String> requestedFields) 
- 
enforceVisibilityInvoked after the query was rewritten. Subclasses must overwrite this method to filter out results that are not visible to the calling user.- Parameters:
- pred- the query
- Returns:
- the modified query
 
- 
isDisabledpublic boolean isDisabled()Check whether querying should be disabled.Currently, the only condition that can disable the whole query processor is if both visibility is enforcedand the user has a non-positive maximum value for thequeryLimitcapability.If querying is disabled, all calls to query(Predicate)andquery(List)will return empty results. This method can be used if callers wish to distinguish this case from a query returning no results from the index.- Returns:
- true if querying should be disabled.
 
- 
getEffectiveLimit
- 
getUserQueryLimit
- 
getInitialPageSizeprotected int getInitialPageSize(int queryLimit) 
- 
formatForLogging
 
-