mirror of https://github.com/apache/lucene.git
- Made a few private method protected, gave authors credit, moved all
instance/class variables to the top, corrected grammar, made code style more uniform. git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@149955 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
05a2ea983c
commit
a3e2205e77
|
@ -106,9 +106,37 @@ import org.apache.lucene.search.*;
|
|||
* </p>
|
||||
*
|
||||
* @author Brian Goetz
|
||||
* @author Peter Halacsy
|
||||
* @author Tatu Saloranta
|
||||
*/
|
||||
|
||||
public class QueryParser {
|
||||
|
||||
private static final int CONJ_NONE = 0;
|
||||
private static final int CONJ_AND = 1;
|
||||
private static final int CONJ_OR = 2;
|
||||
|
||||
private static final int MOD_NONE = 0;
|
||||
private static final int MOD_NOT = 10;
|
||||
private static final int MOD_REQ = 11;
|
||||
|
||||
public static final int DEFAULT_OPERATOR_OR = 0;
|
||||
public static final int DEFAULT_OPERATOR_AND = 1;
|
||||
|
||||
/** The actual operator that parser uses to combine query terms */
|
||||
private int operator = DEFAULT_OPERATOR_OR;
|
||||
|
||||
/**
|
||||
* Whether terms of wildcard and prefix queries are to be automatically
|
||||
* lower-cased or not. Default is <code>true</code>.
|
||||
*/
|
||||
boolean lowercaseWildcardTerms = true;
|
||||
|
||||
Analyzer analyzer;
|
||||
String field;
|
||||
int phraseSlop = 0;
|
||||
|
||||
|
||||
/** Parses a query string, returning a {@link org.apache.lucene.search.Query}.
|
||||
* @param query the query string to be parsed.
|
||||
* @param field the default field for query terms.
|
||||
|
@ -126,15 +154,6 @@ public class QueryParser {
|
|||
}
|
||||
}
|
||||
|
||||
Analyzer analyzer;
|
||||
String field;
|
||||
int phraseSlop = 0;
|
||||
/**
|
||||
* Whether terms of wildcard and prefix queries are to be automatically
|
||||
* lower-cased or not. Default is <code>true</code>.
|
||||
*/
|
||||
boolean lowercaseWildcardTerms = true;
|
||||
|
||||
/** Constructs a query parser.
|
||||
* @param field the default field for query terms.
|
||||
* @param analyzer used to find terms in the query text.
|
||||
|
@ -156,17 +175,20 @@ public class QueryParser {
|
|||
return Query(field);
|
||||
}
|
||||
|
||||
/** Sets the default slop for phrases. If zero, then exact phrase matches
|
||||
are required. Zero by default. */
|
||||
public void setPhraseSlop(int s) { phraseSlop = s; }
|
||||
/** Gets the default slop for phrases. */
|
||||
public int getPhraseSlop() { return phraseSlop; }
|
||||
/**
|
||||
* Sets the default slop for phrases. If zero, then exact phrase matches
|
||||
* are required. Default value is zero.
|
||||
*/
|
||||
public void setPhraseSlop(int phraseSlop) {
|
||||
this.phraseSlop = phraseSlop;
|
||||
}
|
||||
|
||||
public static final int DEFAULT_OPERATOR_OR = 0;
|
||||
public static final int DEFAULT_OPERATOR_AND = 1;
|
||||
|
||||
/** The actual operator that parser uses to combine query terms */
|
||||
private int operator = DEFAULT_OPERATOR_OR;
|
||||
/**
|
||||
* Gets the default slop for phrases.
|
||||
*/
|
||||
public int getPhraseSlop() {
|
||||
return phraseSlop;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the boolean operator of the QueryParser.
|
||||
|
@ -181,18 +203,18 @@ public class QueryParser {
|
|||
}
|
||||
|
||||
public int getOperator() {
|
||||
return this.operator;
|
||||
return operator;
|
||||
}
|
||||
|
||||
public void setLowercaseWildcardTerms(boolean b) {
|
||||
owercaseWildcardTerms = b;
|
||||
public void setLowercaseWildcardTerms(boolean lowercaseWildcardTerms) {
|
||||
this.lowercaseWildcardTerms = lowercaseWildcardTerms;
|
||||
}
|
||||
|
||||
public boolean getLowercaseWildcardTerms() {
|
||||
return lowercaseWildcardTerms;
|
||||
}
|
||||
|
||||
private void addClause(Vector clauses, int conj, int mods, Query q) {
|
||||
protected void addClause(Vector clauses, int conj, int mods, Query q) {
|
||||
boolean required, prohibited;
|
||||
|
||||
// If this term is introduced by AND, make the preceding term required,
|
||||
|
@ -219,7 +241,6 @@ public class QueryParser {
|
|||
return;
|
||||
|
||||
if (operator == DEFAULT_OPERATOR_OR) {
|
||||
// THIS IS THE ORIGINAL CODE
|
||||
// We set REQUIRED if we're introduced by AND or +; PROHIBITED if
|
||||
// introduced by NOT or -; make sure not to set both.
|
||||
prohibited = (mods == MOD_NOT);
|
||||
|
@ -228,7 +249,6 @@ public class QueryParser {
|
|||
required = true;
|
||||
}
|
||||
} else {
|
||||
// THIS CODE ADDED BY PETER HALACSY
|
||||
// We set PROHIBITED if we're introduced by NOT or -; We set REQUIRED
|
||||
// if not PROHIBITED and not introduced by OR
|
||||
prohibited = (mods == MOD_NOT);
|
||||
|
@ -237,9 +257,9 @@ public class QueryParser {
|
|||
clauses.addElement(new BooleanClause(q, required, prohibited));
|
||||
}
|
||||
|
||||
private Query getFieldQuery(String field,
|
||||
Analyzer analyzer,
|
||||
String queryText) {
|
||||
protected Query getFieldQuery(String field,
|
||||
Analyzer analyzer,
|
||||
String queryText) {
|
||||
// Use the analyzer to get all the tokens, and then build a TermQuery,
|
||||
// PhraseQuery, or nothing based on the term count
|
||||
|
||||
|
@ -273,11 +293,11 @@ public class QueryParser {
|
|||
}
|
||||
}
|
||||
|
||||
private Query getRangeQuery(String field,
|
||||
Analyzer analyzer,
|
||||
String part1,
|
||||
String part2,
|
||||
boolean inclusive)
|
||||
protected Query getRangeQuery(String field,
|
||||
Analyzer analyzer,
|
||||
String part1,
|
||||
String part2,
|
||||
boolean inclusive)
|
||||
{
|
||||
boolean isDate = false, isNumber = false;
|
||||
|
||||
|
@ -302,7 +322,7 @@ public class QueryParser {
|
|||
}
|
||||
|
||||
/**
|
||||
* Factory method for generating query, given set of clauses.
|
||||
* Factory method for generating query, given a set of clauses.
|
||||
* By default creates a boolean query composed of clauses passed in.
|
||||
*
|
||||
* Can be overridden by extending classes, to modify query being
|
||||
|
@ -329,18 +349,18 @@ public class QueryParser {
|
|||
* that has just a single * character at the end)
|
||||
*<p>
|
||||
* Depending on settings, prefix term may be lower-cased
|
||||
* automatically. It will not go through the default analyzer,
|
||||
* however, since normal analyzers are unlikely to work properly
|
||||
* automatically. It will not go through the default Analyzer,
|
||||
* however, since normal Analyzers are unlikely to work properly
|
||||
* with wildcard templates.
|
||||
*<p>
|
||||
* Can be overridden by extending classes, to provide custom handling for
|
||||
* wild card queries (which may be necessary due to missing analyzer calls)
|
||||
* wildcard queries, which may be necessary due to missing analyzer calls.
|
||||
*
|
||||
* @param field Name of the field query will use.
|
||||
* @param termStr Term token that contains one or more wild card
|
||||
* characters (? or *), but is not simple prefix term
|
||||
*
|
||||
* @return Resulting query build for the term
|
||||
* @return Resulting {@link Query} built for the term
|
||||
*/
|
||||
protected Query getWildcardQuery(String field, String termStr)
|
||||
{
|
||||
|
@ -353,25 +373,25 @@ public class QueryParser {
|
|||
|
||||
/**
|
||||
* Factory method for generating a query (similar to
|
||||
* (@link getWildcardQuery}). Called when parser parses an input term
|
||||
* token that uses prefix notation; that is, contains a single '*' wild
|
||||
* char character as it's last character. Since this is a special case
|
||||
* of generic wild card term, and such a query can be optimized easily,
|
||||
* this usually results in different query object.
|
||||
* ({@link getWildcardQuery}). Called when parser parses an input term
|
||||
* token that uses prefix notation; that is, contains a single '*' wildcard
|
||||
* character as its last character. Since this is a special case
|
||||
* of generic wildcard term, and such a query can be optimized easily,
|
||||
* this usually results in a different query object.
|
||||
*<p>
|
||||
* Depending on settings, prefix term may be lower-cased
|
||||
* automatically. It will not go through the default analyzer,
|
||||
* however, since normal analyzers are unlikely to work properly
|
||||
* Depending on settings, a prefix term may be lower-cased
|
||||
* automatically. It will not go through the default Analyzer,
|
||||
* however, since normal Analyzers are unlikely to work properly
|
||||
* with wildcard templates.
|
||||
*<p>
|
||||
* Can be overridden by extending classes, to provide custom handling for
|
||||
* wild card queries (which may be necessary due to missing analyzer calls)
|
||||
* wild card queries, which may be necessary due to missing analyzer calls.
|
||||
*
|
||||
* @param field Name of the field query will use.
|
||||
* @param termStr Term token to use for building term for the query
|
||||
* (<b>without</b> trailing '*' character!)
|
||||
*
|
||||
* @return Resulting query build for the term
|
||||
* @return Resulting {@link Query} built for the term
|
||||
*/
|
||||
protected Query getPrefixQuery(String field, String termStr)
|
||||
{
|
||||
|
@ -384,13 +404,13 @@ public class QueryParser {
|
|||
|
||||
/**
|
||||
* Factory method for generating a query (similar to
|
||||
* (@link getWildcardQuery}). Called when parser parses
|
||||
* ({@link getWildcardQuery}). Called when parser parses
|
||||
* an input term token that has the fuzzy suffix (~) appended.
|
||||
*
|
||||
* @param field Name of the field query will use.
|
||||
* @param termStr Term token to use for building term for the query
|
||||
*
|
||||
* @return Resulting query build for the term
|
||||
* @return Resulting {@link Query} built for the term
|
||||
*/
|
||||
protected Query getFuzzyQuery(String field, String termStr)
|
||||
{
|
||||
|
@ -404,14 +424,6 @@ public class QueryParser {
|
|||
Query q = qp.parse(args[0]);
|
||||
System.out.println(q.toString("field"));
|
||||
}
|
||||
|
||||
private static final int CONJ_NONE = 0;
|
||||
private static final int CONJ_AND = 1;
|
||||
private static final int CONJ_OR = 2;
|
||||
|
||||
private static final int MOD_NONE = 0;
|
||||
private static final int MOD_NOT = 10;
|
||||
private static final int MOD_REQ = 11;
|
||||
}
|
||||
|
||||
PARSER_END(QueryParser)
|
||||
|
|
Loading…
Reference in New Issue