Index: src/java/org/apache/lucene/queryParser/MultiFieldQueryParser.java =================================================================== RCS file: /home/cvspublic/jakarta-lucene/src/java/org/apache/lucene/queryParser/MultiFieldQueryParser.java,v retrieving revision 1.2 diff -c -5 -r1.2 MultiFieldQueryParser.java *** src/java/org/apache/lucene/queryParser/MultiFieldQueryParser.java 22 Mar 2002 03:22:33 -0000 1.2 --- src/java/org/apache/lucene/queryParser/MultiFieldQueryParser.java 12 Apr 2002 16:29:58 -0000 *************** *** 52,61 **** --- 52,62 ---- * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * . */ + import java.io.IOException; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.queryParser.CharStream; import org.apache.lucene.queryParser.ParseException; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.queryParser.QueryParserTokenManager; *************** *** 103,115 **** * @param query Query string to parse * @param fields Fields to search on * @param analyzer Analyzer to use * @throws ParserException if query parsing fails * @throws TokenMgrError if query parsing fails */ public static Query parse(String query, String[] fields, Analyzer analyzer) ! throws ParseException { BooleanQuery bQuery = new BooleanQuery(); for (int i = 0; i < fields.length; i++) { Query q = parse(query, fields[i], analyzer); --- 104,118 ---- * @param query Query string to parse * @param fields Fields to search on * @param analyzer Analyzer to use * @throws ParserException if query parsing fails * @throws TokenMgrError if query parsing fails + * @throws IOException if the Analyzer's tokenStream fails to tokenize + * terms in the query. */ public static Query parse(String query, String[] fields, Analyzer analyzer) ! throws ParseException, IOException { BooleanQuery bQuery = new BooleanQuery(); for (int i = 0; i < fields.length; i++) { Query q = parse(query, fields[i], analyzer); *************** *** 145,158 **** * @param fields Fields to search on * @param flags Flags describing the fields * @param analyzer Analyzer to use * @throws ParserException if query parsing fails * @throws TokenMgrError if query parsing fails */ public static Query parse(String query, String[] fields, int[] flags, Analyzer analyzer) ! throws ParseException { BooleanQuery bQuery = new BooleanQuery(); for (int i = 0; i < fields.length; i++) { Query q = parse(query, fields[i], analyzer); --- 148,163 ---- * @param fields Fields to search on * @param flags Flags describing the fields * @param analyzer Analyzer to use * @throws ParserException if query parsing fails * @throws TokenMgrError if query parsing fails + * @throws IOException if the Analyzer's tokenStream fails to tokenize + * terms in the query. */ public static Query parse(String query, String[] fields, int[] flags, Analyzer analyzer) ! throws ParseException, IOException { BooleanQuery bQuery = new BooleanQuery(); for (int i = 0; i < fields.length; i++) { Query q = parse(query, fields[i], analyzer); Index: src/java/org/apache/lucene/queryParser/QueryParser.jj =================================================================== RCS file: /home/cvspublic/jakarta-lucene/src/java/org/apache/lucene/queryParser/QueryParser.jj,v retrieving revision 1.15 diff -c -5 -r1.15 QueryParser.jj *** src/java/org/apache/lucene/queryParser/QueryParser.jj 22 Feb 2002 21:06:16 -0000 1.15 --- src/java/org/apache/lucene/queryParser/QueryParser.jj 12 Apr 2002 16:29:59 -0000 *************** *** 110,122 **** * @param query the query string to be parsed. * @param field the default field for query terms. * @param analyzer used to find terms in the query text. * @throws ParseException if the parsing fails * @throws TokenMgrError if the parsing fails */ static public Query parse(String query, String field, Analyzer analyzer) ! throws ParseException, TokenMgrError { QueryParser parser = new QueryParser(field, analyzer); return parser.parse(query); } Analyzer analyzer; --- 110,124 ---- * @param query the query string to be parsed. * @param field the default field for query terms. * @param analyzer used to find terms in the query text. * @throws ParseException if the parsing fails * @throws TokenMgrError if the parsing fails + * @throws IOException if the Analyzer's tokenStream fails to tokenize + * terms in the query. */ static public Query parse(String query, String field, Analyzer analyzer) ! throws ParseException, TokenMgrError, IOException { QueryParser parser = new QueryParser(field, analyzer); return parser.parse(query); } Analyzer analyzer; *************** *** 135,147 **** /** Parses a query string, returning a * Query. * @param query the query string to be parsed. * @throws ParseException if the parsing fails ! * @throws TokenMgrError if ther parsing fails */ ! public Query parse(String query) throws ParseException, TokenMgrError { ReInit(new FastCharStream(new StringReader(query))); return Query(field); } /** Sets the default slop for phrases. If zero, then exact phrase matches --- 137,152 ---- /** Parses a query string, returning a * Query. * @param query the query string to be parsed. * @throws ParseException if the parsing fails ! * @throws TokenMgrError if the parsing fails ! * @throws IOException if the Analyzer's tokenStream fails to tokenize ! * terms in the query. */ ! public Query parse(String query) ! throws ParseException, TokenMgrError, IOException { ReInit(new FastCharStream(new StringReader(query))); return Query(field); } /** Sets the default slop for phrases. If zero, then exact phrase matches *************** *** 176,205 **** clauses.addElement(new BooleanClause(q, required, prohibited)); } private 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 TokenStream source = analyzer.tokenStream(field, new StringReader(queryText)); Vector v = new Vector(); org.apache.lucene.analysis.Token t; ! while (true) { ! try { ! t = source.next(); ! } ! catch (IOException e) { ! t = null; ! } ! if (t == null) ! break; v.addElement(t.termText()); } if (v.size() == 0) return null; else if (v.size() == 1) return new TermQuery(new Term(field, (String) v.elementAt(0))); else { --- 181,206 ---- clauses.addElement(new BooleanClause(q, required, prohibited)); } private Query getFieldQuery(String field, Analyzer analyzer, ! String queryText) throws IOException { // Use the analyzer to get all the tokens, and then build a TermQuery, // PhraseQuery, or nothing based on the term count TokenStream source = analyzer.tokenStream(field, new StringReader(queryText)); Vector v = new Vector(); org.apache.lucene.analysis.Token t; ! try { ! t = source.next(); v.addElement(t.termText()); + } finally { + source.close(); } + if (v.size() == 0) return null; else if (v.size() == 1) return new TermQuery(new Term(field, (String) v.elementAt(0))); else { *************** *** 213,249 **** } private Query getRangeQuery(String field, Analyzer analyzer, String queryText, ! boolean inclusive) { // Use the analyzer to get all the tokens. There should be 1 or 2. TokenStream source = analyzer.tokenStream(field, new StringReader(queryText)); Term[] terms = new Term[2]; - org.apache.lucene.analysis.Token t; ! for (int i = 0; i < 2; i++) ! { ! try ! { ! t = source.next(); ! } ! catch (IOException e) ! { ! t = null; ! } ! if (t != null) ! { String text = t.termText(); ! if (!text.equalsIgnoreCase("NULL")) ! { terms[i] = new Term(field, text); } } } return new RangeQuery(terms[0], terms[1], inclusive); } public static void main(String[] args) throws Exception { QueryParser qp = new QueryParser("field", --- 214,242 ---- } private Query getRangeQuery(String field, Analyzer analyzer, String queryText, ! boolean inclusive) throws IOException { // Use the analyzer to get all the tokens. There should be 1 or 2. TokenStream source = analyzer.tokenStream(field, new StringReader(queryText)); Term[] terms = new Term[2]; ! try { ! for (int i = 0; i < 2; i++) { ! org.apache.lucene.analysis.Token t = source.next(); String text = t.termText(); ! if (!text.equalsIgnoreCase("NULL")) { terms[i] = new Term(field, text); } } + } finally { + source.close(); } + return new RangeQuery(terms[0], terms[1], inclusive); } public static void main(String[] args) throws Exception { QueryParser qp = new QueryParser("field", *************** *** 328,338 **** | { ret = MOD_NOT; } ] { return ret; } } ! Query Query(String field) : { Vector clauses = new Vector(); Query q, firstQuery=null; int conj, mods; } --- 321,331 ---- | { ret = MOD_NOT; } ] { return ret; } } ! Query Query(String field) throws IOException : { Vector clauses = new Vector(); Query q, firstQuery=null; int conj, mods; } *************** *** 357,367 **** return query; } } } ! Query Clause(String field) : { Query q; Token fieldToken=null; } { [ --- 350,360 ---- return query; } } } ! Query Clause(String field) throws IOException : { Query q; Token fieldToken=null; } { [ *************** *** 377,387 **** return q; } } ! Query Term(String field) : { Token term, boost=null, slop=null; boolean prefix = false; boolean wildcard = false; boolean fuzzy = false; boolean rangein = false; --- 370,380 ---- return q; } } ! Query Term(String field) throws IOException : { Token term, boost=null, slop=null; boolean prefix = false; boolean wildcard = false; boolean fuzzy = false; boolean rangein = false;