Return-Path: Delivered-To: apmail-jakarta-lucene-dev-archive@apache.org Received: (qmail 50888 invoked from network); 19 Feb 2002 00:44:04 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 19 Feb 2002 00:44:04 -0000 Received: (qmail 13118 invoked by uid 97); 19 Feb 2002 00:44:10 -0000 Delivered-To: qmlist-jakarta-archive-lucene-dev@jakarta.apache.org Received: (qmail 13102 invoked by uid 97); 19 Feb 2002 00:44:10 -0000 Mailing-List: contact lucene-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Lucene Developers List" Reply-To: "Lucene Developers List" Delivered-To: mailing list lucene-dev@jakarta.apache.org Received: (qmail 13091 invoked by uid 97); 19 Feb 2002 00:44:09 -0000 Date: 19 Feb 2002 00:44:01 -0000 Message-ID: <20020219004401.16550.qmail@icarus.apache.org> From: briangoetz@apache.org To: jakarta-lucene-cvs@apache.org Subject: cvs commit: jakarta-lucene/src/test/org/apache/lucene/queryParser TestQueryParser.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N briangoetz 02/02/18 16:44:00 Modified: src/java/org/apache/lucene/queryParser QueryParser.jj src/java/org/apache/lucene/search PhraseQuery.java src/test/org/apache/lucene/queryParser TestQueryParser.java Log: Add ~N syntax to phrase queries in query parser to allow for user-settable slop Revision Changes Path 1.14 +10 -1 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.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- QueryParser.jj 15 Feb 2002 02:55:46 -0000 1.13 +++ QueryParser.jj 19 Feb 2002 00:44:00 -0000 1.14 @@ -288,6 +288,7 @@ | | (<_TERM_CHAR>)* > | +| )+ > | (<_TERM_CHAR>)* "*" > | (<_TERM_CHAR> | ( [ "*", "?" ] ))* > @@ -375,7 +376,7 @@ Query Term(String field) : { - Token term, boost=null; + Token term, boost=null, slop=null; boolean prefix = false; boolean wildcard = false; boolean fuzzy = false; @@ -411,10 +412,18 @@ rangein); } | term= + [ slop= ] [ boost= ] { q = getFieldQuery(field, analyzer, term.image.substring(1, term.image.length()-1)); + if (slop != null && q instanceof PhraseQuery) { + try { + int s = Float.valueOf(slop.image.substring(1)).intValue(); + ((PhraseQuery) q).setSlop(s); + } + catch (Exception ignored) { } + } } ) { 1.3 +5 -0 jakarta-lucene/src/java/org/apache/lucene/search/PhraseQuery.java Index: PhraseQuery.java =================================================================== RCS file: /home/cvs/jakarta-lucene/src/java/org/apache/lucene/search/PhraseQuery.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- PhraseQuery.java 17 Jan 2002 02:00:09 -0000 1.2 +++ PhraseQuery.java 19 Feb 2002 00:44:00 -0000 1.3 @@ -163,6 +163,11 @@ } buffer.append("\""); + if (slop != 0) { + buffer.append("~"); + buffer.append(slop); + } + if (boost != 1.0f) { buffer.append("^"); buffer.append(Float.toString(boost)); 1.10 +9 -0 jakarta-lucene/src/test/org/apache/lucene/queryParser/TestQueryParser.java Index: TestQueryParser.java =================================================================== RCS file: /home/cvs/jakarta-lucene/src/test/org/apache/lucene/queryParser/TestQueryParser.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- TestQueryParser.java 28 Jan 2002 20:25:20 -0000 1.9 +++ TestQueryParser.java 19 Feb 2002 00:44:00 -0000 1.10 @@ -166,6 +166,7 @@ assertQueryEquals("term^2.0", null, "term^2.0"); assertQueryEquals("term^2", null, "term^2.0"); assertQueryEquals("\"germ term\"^2.0", null, "\"germ term\"^2.0"); + assertQueryEquals("\"term germ\"^2", null, "\"term germ\"^2.0"); assertQueryEquals("(foo OR bar) AND (baz OR boo)", null, "+(foo bar) +(baz boo)"); @@ -182,6 +183,14 @@ assertQueryEquals("a&b", a, "a&b"); assertQueryEquals("a&&b", a, "a&&b"); assertQueryEquals(".NET", a, ".NET"); + } + + public void testSlop() throws Exception { + assertQueryEquals("\"term germ\"~2", null, "\"term germ\"~2"); + assertQueryEquals("\"term germ\"~2 flork", null, "\"term germ\"~2 flork"); + assertQueryEquals("\"term\"~2", null, "term"); + assertQueryEquals("\" \"~2 germ", null, "germ"); + assertQueryEquals("\"term germ\"~2^2", null, "\"term germ\"~2^2.0"); } public void testNumber() throws Exception { -- To unsubscribe, e-mail: For additional commands, e-mail: