ehatcher 2004/05/22 10:34:31 Modified: . CHANGES.txt src/java/org/apache/lucene/queryParser QueryParser.jj QueryParser.java Log: enhancement to QueryParser to allow slop factor passed to a new getFieldQuery method Revision Changes Path 1.88 +9 -2 jakarta-lucene/CHANGES.txt Index: CHANGES.txt =================================================================== RCS file: /home/cvs/jakarta-lucene/CHANGES.txt,v retrieving revision 1.87 retrieving revision 1.88 diff -u -r1.87 -r1.88 --- CHANGES.txt 20 May 2004 17:16:56 -0000 1.87 +++ CHANGES.txt 22 May 2004 17:34:31 -0000 1.88 @@ -11,6 +11,13 @@ 2. Added new class FieldCache to manage in-memory caches of field term values. (Tim Jones) + 3. Added overloaded getFieldQuery method to QueryParser which + accepts the slop factor specified for the phrase (or the default + phrase slop for the QueryParser instance). This allows overriding + methods to replace a PhraseQuery with a SpanNearQuery instead, + keeping the proper slop factor. (Erik Hatcher) + + 1.4 RC3 1. Fixed several search bugs introduced by the skipTo() changes in @@ -265,7 +272,7 @@ 7. Modified QueryParser to make it possible to programmatically specify the default Boolean operator (OR or AND). - (Péter Halácsy via otis) + (P�ter Hal�csy via otis) 8. Made many search methods and classes non-final, per requests. This includes IndexWriter and IndexSearcher, among others. 1.43 +27 -5 jakarta-lucene/src/java/org/apache/lucene/queryParser/QueryParser.jj Index: QueryParser.jj =================================================================== RCS file: /home/cvs/jakarta-lucene/src/java/org/apache/lucene/queryParser/QueryParser.jj,v retrieving revision 1.42 retrieving revision 1.43 diff -u -r1.42 -r1.43 --- QueryParser.jj 24 Mar 2004 10:12:27 -0000 1.42 +++ QueryParser.jj 22 May 2004 17:34:31 -0000 1.43 @@ -285,6 +285,26 @@ } /** + * Base implementation delegates to [EMAIL PROTECTED] #getFieldQuery(String,Analyzer,String)}. + * This method may be overridden, for example, to return + * a SpanNearQuery instead of a PhraseQuery. + * + * @exception ParseException throw in overridden method to disallow + */ + protected Query getFieldQuery(String field, + Analyzer analyzer, + String queryText, + int slop) throws ParseException { + Query query = getFieldQuery(field, analyzer, queryText); + + if (query instanceof PhraseQuery) { + ((PhraseQuery) query).setSlop(slop); + } + + return query; + } + + /** * @exception ParseException throw in overridden method to disallow */ protected Query getRangeQuery(String field, @@ -655,15 +675,17 @@ [ slop=<SLOP> ] [ <CARAT> boost=<NUMBER> ] { - q = getFieldQuery(field, analyzer, - term.image.substring(1, term.image.length()-1)); - if (slop != null && q instanceof PhraseQuery) { + int s = phraseSlop; + + if (slop != null) { try { - int s = Float.valueOf(slop.image.substring(1)).intValue(); - ((PhraseQuery) q).setSlop(s); + s = Float.valueOf(slop.image.substring(1)).intValue(); } catch (Exception ignored) { } } + q = getFieldQuery(field, analyzer, + term.image.substring(1, term.image.length()-1), + s); } ) { 1.11 +27 -5 jakarta-lucene/src/java/org/apache/lucene/queryParser/QueryParser.java Index: QueryParser.java =================================================================== RCS file: /home/cvs/jakarta-lucene/src/java/org/apache/lucene/queryParser/QueryParser.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- QueryParser.java 3 Mar 2004 12:07:13 -0000 1.10 +++ QueryParser.java 22 May 2004 17:34:31 -0000 1.11 @@ -262,6 +262,26 @@ } /** + * Base implementation delegates to [EMAIL PROTECTED] #getFieldQuery(String,Analyzer,String)}. + * This method may be overridden, for example, to return + * a SpanNearQuery instead of a PhraseQuery. + * + * @exception ParseException throw in overridden method to disallow + */ + protected Query getFieldQuery(String field, + Analyzer analyzer, + String queryText, + int slop) throws ParseException { + Query query = getFieldQuery(field, analyzer, queryText); + + if (query instanceof PhraseQuery) { + ((PhraseQuery) query).setSlop(slop); + } + + return query; + } + + /** * @exception ParseException throw in overridden method to disallow */ protected Query getRangeQuery(String field, @@ -770,15 +790,17 @@ jj_la1[20] = jj_gen; ; } - q = getFieldQuery(field, analyzer, - term.image.substring(1, term.image.length()-1)); - if (slop != null && q instanceof PhraseQuery) { + int s = phraseSlop; + + if (slop != null) { try { - int s = Float.valueOf(slop.image.substring(1)).intValue(); - ((PhraseQuery) q).setSlop(s); + s = Float.valueOf(slop.image.substring(1)).intValue(); } catch (Exception ignored) { } } + q = getFieldQuery(field, analyzer, + term.image.substring(1, term.image.length()-1), + s); break; default: jj_la1[21] = jj_gen;
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]