Class MultiFieldQueryParser
- All Implemented Interfaces:
QueryParserConstants
,CommonQueryParserConfiguration
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.lucene.queryparser.classic.QueryParser
QueryParser.Operator
Nested classes/interfaces inherited from class org.apache.lucene.queryparser.classic.QueryParserBase
QueryParserBase.MethodRemovedUseAnother
-
Field Summary
Fields inherited from class org.apache.lucene.queryparser.classic.QueryParser
jj_nt, token, token_source
Fields inherited from class org.apache.lucene.queryparser.classic.QueryParserBase
AND_OPERATOR, OR_OPERATOR
Fields inherited from interface org.apache.lucene.queryparser.classic.QueryParserConstants
_ESCAPED_CHAR, _NUM_CHAR, _QUOTED_CHAR, _TERM_CHAR, _TERM_START_CHAR, _WHITESPACE, AND, BAREOPER, Boost, CARAT, COLON, DEFAULT, EOF, FUZZY_SLOP, LPAREN, MINUS, NOT, NUMBER, OR, PLUS, PREFIXTERM, QUOTED, Range, RANGE_GOOP, RANGE_QUOTED, RANGE_TO, RANGEEX_END, RANGEEX_START, RANGEIN_END, RANGEIN_START, REGEXPTERM, RPAREN, STAR, TERM, tokenImage, WILDTERM
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic Query
Parses a query which searches on the fields specified.static Query
parse
(Version matchVersion, String[] queries, String[] fields, BooleanClause.Occur[] flags, Analyzer analyzer) Parses a query, searching on the fields specified.static Query
parse
(Version matchVersion, String query, String[] fields, BooleanClause.Occur[] flags, Analyzer analyzer) Parses a query, searching on the fields specified.Methods inherited from class org.apache.lucene.queryparser.classic.QueryParser
Clause, Conjunction, disable_tracing, enable_tracing, generateParseException, getNextToken, getToken, Modifiers, Query, ReInit, ReInit, Term, TopLevelQuery
Methods inherited from class org.apache.lucene.queryparser.classic.QueryParserBase
escape, getAllowLeadingWildcard, getAnalyzeRangeTerms, getAutoGeneratePhraseQueries, getDateResolution, getDefaultOperator, getField, getFuzzyMinSim, getFuzzyPrefixLength, getLocale, getLowercaseExpandedTerms, getMultiTermRewriteMethod, getPhraseSlop, getTimeZone, init, parse, setAllowLeadingWildcard, setAnalyzeRangeTerms, setAutoGeneratePhraseQueries, setDateResolution, setDateResolution, setDefaultOperator, setFuzzyMinSim, setFuzzyPrefixLength, setLocale, setLowercaseExpandedTerms, setMultiTermRewriteMethod, setPhraseSlop, setTimeZone
Methods inherited from class org.apache.lucene.util.QueryBuilder
createBooleanQuery, createBooleanQuery, createMinShouldMatchQuery, createPhraseQuery, createPhraseQuery, getAnalyzer, getEnablePositionIncrements, setAnalyzer, setEnablePositionIncrements
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.lucene.queryparser.flexible.standard.CommonQueryParserConfiguration
getAnalyzer, getEnablePositionIncrements, setEnablePositionIncrements
-
Constructor Details
-
MultiFieldQueryParser
public MultiFieldQueryParser(Version matchVersion, String[] fields, Analyzer analyzer, Map<String, Float> boosts) Creates a MultiFieldQueryParser. Allows passing of a map with term to Boost, and the boost to apply to each term.It will, when parse(String query) is called, construct a query like this (assuming the query consists of two terms and you specify the two fields
title
andbody
):(title:term1 body:term1) (title:term2 body:term2)
When setDefaultOperator(AND_OPERATOR) is set, the result will be:
+(title:term1 body:term1) +(title:term2 body:term2)
When you pass a boost (title=>5 body=>10) you can get
+(title:term1^5.0 body:term1^10.0) +(title:term2^5.0 body:term2^10.0)
In other words, all the query's terms must appear, but it doesn't matter in what fields they appear.
-
MultiFieldQueryParser
Creates a MultiFieldQueryParser.It will, when parse(String query) is called, construct a query like this (assuming the query consists of two terms and you specify the two fields
title
andbody
):(title:term1 body:term1) (title:term2 body:term2)
When setDefaultOperator(AND_OPERATOR) is set, the result will be:
+(title:term1 body:term1) +(title:term2 body:term2)
In other words, all the query's terms must appear, but it doesn't matter in what fields they appear.
-
-
Method Details
-
parse
public static Query parse(Version matchVersion, String[] queries, String[] fields, Analyzer analyzer) throws ParseException Parses a query which searches on the fields specified.If x fields are specified, this effectively constructs:
(field1:query1) (field2:query2) (field3:query3)...(fieldx:queryx)
- Parameters:
matchVersion
- Lucene version to match; this is passed through to QueryParser.queries
- Queries strings to parsefields
- Fields to search onanalyzer
- Analyzer to use- Throws:
ParseException
- if query parsing failsIllegalArgumentException
- if the length of the queries array differs from the length of the fields array
-
parse
public static Query parse(Version matchVersion, String query, String[] fields, BooleanClause.Occur[] flags, Analyzer analyzer) throws ParseException Parses a query, searching on the fields specified. Use this if you need to specify certain fields as required, and others as prohibited.Usage:
String[] fields = {"filename", "contents", "description"}; BooleanClause.Occur[] flags = {BooleanClause.Occur.SHOULD, BooleanClause.Occur.MUST, BooleanClause.Occur.MUST_NOT}; MultiFieldQueryParser.parse("query", fields, flags, analyzer);
The code above would construct a query:
(filename:query) +(contents:query) -(description:query)
- Parameters:
matchVersion
- Lucene version to match; this is passed through to QueryParser.query
- Query string to parsefields
- Fields to search onflags
- Flags describing the fieldsanalyzer
- Analyzer to use- Throws:
ParseException
- if query parsing failsIllegalArgumentException
- if the length of the fields array differs from the length of the flags array
-
parse
public static Query parse(Version matchVersion, String[] queries, String[] fields, BooleanClause.Occur[] flags, Analyzer analyzer) throws ParseException Parses a query, searching on the fields specified. Use this if you need to specify certain fields as required, and others as prohibited.Usage:
String[] query = {"query1", "query2", "query3"}; String[] fields = {"filename", "contents", "description"}; BooleanClause.Occur[] flags = {BooleanClause.Occur.SHOULD, BooleanClause.Occur.MUST, BooleanClause.Occur.MUST_NOT}; MultiFieldQueryParser.parse(query, fields, flags, analyzer);
The code above would construct a query:
(filename:query1) +(contents:query2) -(description:query3)
- Parameters:
matchVersion
- Lucene version to match; this is passed through to QueryParser.queries
- Queries string to parsefields
- Fields to search onflags
- Flags describing the fieldsanalyzer
- Analyzer to use- Throws:
ParseException
- if query parsing failsIllegalArgumentException
- if the length of the queries, fields, and flags array differ
-