Span Multi Term Query¶
public class SpanMultiTermQuery<Q extends MultiTermQuery> extends SpanQuery Wraps any MultiTermQuery as a SpanQuery, so it can be nested within other SpanQuery classes. The query is rewritten by default to a SpanOrQuery containing the expanded terms, but this can be customized.
Example:
WildcardQuery wildcard = new WildcardQuery(new Term(“field”, “bro?n”)); SpanQuery spanWildcard = new SpanMultiTermQuery<WildcardQuery>(wildcard); // do something with spanWildcard, such as use it in a SpanFirstQuery
Proto definition:
// Wrapper message for different types of SpanQuery
message SpanQuery {
oneof query {
TermQuery spanTermQuery = 1;
SpanNearQuery spanNearQuery = 2;
SpanMultiTermQueryspanMultiTermQuery= 3;
}
}
message Term {
string field = 1;
string text = 2;
}
// A query that matches documents containing terms matching a pattern.
message WildcardQuery {
Term term = 1;
}
// A query that matches documents containing terms similar to the specified term.
message FuzzyQuery {
Term term = 1;
// The maximum allowed Levenshtein Edit Distance (or number of edits). Possible values are 0, 1 and 2. Either set this or auto. Default is 2.
int32 maxEdits = 2;
// Length of common (non-fuzzy) prefix. Default is 0.
int32 prefixLength = 3;
// The maximum number of terms to match. Default is 50.
int32 maxExpansions = 4;
// True if transpositions should be treated as a primitive edit operation. If this is false, comparisons will implement the classic Levenshtein algorithm. Default is true.
bool transpositions = 5;
AutoFuzziness auto = 9; // Auto fuzziness which determines the max edits based on the term length. AUTO is the preferred setting. Either set this or maxEdits.
// Optional low and high values for auto fuzziness. Defaults to low: 3 and high: 6 if both are unset. Valid values are low >= 0 and low < high
message FuzzyParams.AutoFuzziness {
int32 low = 10; // Optional low distance argument.
int32 high = 11; // Optional high distance argument.
}
}
// A query that matches documents that contain a specific prefix in a provided field.
message PrefixQuery {
// Document field name.
string field = 1;
// Prefix to search for.
string prefix = 2;
// Method used to rewrite the query.
RewriteMethod rewrite = 3;
// Specifies the size to use for the TOP_TERMS* rewrite methods.
int32 rewriteTopTermsSize = 4;
}
// Enum for RegexpQuery flags
enum RegexpFlag {
// Syntax flag, enables all optional regexp syntax.
REGEXP_ALL = 0;
// Syntax flag, enables anystring (@).
REGEXP_ANYSTRING = 1;
// Syntax flag, enables named automata (<identifier>).
REGEXP_AUTOMATON = 2;
// Syntax flag, enables complement (~).
REGEXP_COMPLEMENT = 3;
// Syntax flag, enables empty language (#).
REGEXP_EMPTY = 4;
// Syntax flag, enables intersection (&).
REGEXP_INTERSECTION = 5;
// Syntax flag, enables numerical intervals ( <n-m>).
REGEXP_INTERVAL = 6;
// Syntax flag, enables no optional regexp syntax.
REGEXP_NONE = 7;
}
// Message for RegexpQuery
message RegexpQuery {
Term term = 1;
// Optional flags for the regular expression
RegexpFlag flag = 2;
// maximum number of states that compiling the automaton for the regexp can result in. Set higher to allow more complex queries and lower to prevent memory exhaustion.
int32 maxDeterminizedStates = 3;
}
// Message for a SpanMultiTermQuery
message SpanMultiTermQuery{
// The query to be wrapped
oneof wrappedQuery {
WildcardQuery wildcardQuery = 1;
FuzzyQuery fuzzyQuery = 2;
PrefixQuery prefixQuery = 3;
RegexpQuery regexpQuery = 4;
}
}