dnaber      2004/12/14 15:02:54

  Modified:    src/java/org/apache/lucene/queryParser QueryParser.java
                        QueryParser.jj
               src/test/org/apache/lucene/queryParser TestQueryParser.java
  Log:
  The terms of fuzzy and range queries are lowercased by default now. 
setLowercaseWildcardTerms deprecated, introducing setLowercaseExpandedTerms 
instead.
  
  Revision  Changes    Path
  1.23      +33 -10    
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.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- QueryParser.java  23 Nov 2004 23:13:34 -0000      1.22
  +++ QueryParser.java  14 Dec 2004 23:02:53 -0000      1.23
  @@ -73,7 +73,7 @@
     /** The actual operator that parser uses to combine query terms */
     private Operator operator = OR_OPERATOR;
   
  -  boolean lowercaseWildcardTerms = true;
  +  boolean lowercaseExpandedTerms = true;
   
     Analyzer analyzer;
     String field;
  @@ -242,18 +242,34 @@
     }
   
     /**
  -   * Whether terms of wildcard and prefix queries are to be automatically
  +   * Whether terms of wildcard, prefix, fuzzy and range queries are to be 
automatically
      * lower-cased or not.  Default is <code>true</code>.
  +   * @deprecated use [EMAIL PROTECTED] #setLowercaseExpandedTerms(boolean)} 
instead
      */
  -  public void setLowercaseWildcardTerms(boolean lowercaseWildcardTerms) {
  -    this.lowercaseWildcardTerms = lowercaseWildcardTerms;
  +  public void setLowercaseWildcardTerms(boolean lowercaseExpandedTerms) {
  +    this.lowercaseExpandedTerms = lowercaseExpandedTerms;
     }
   
     /**
  -   * @see #setLowercaseWildcardTerms(boolean)
  +   * Whether terms of wildcard, prefix, fuzzy and range queries are to be 
automatically
  +   * lower-cased or not.  Default is <code>true</code>.
  +   */
  +  public void setLowercaseExpandedTerms(boolean lowercaseExpandedTerms) {
  +    this.lowercaseExpandedTerms = lowercaseExpandedTerms;
  +  }
  +
  +  /**
  +   * @deprecated use [EMAIL PROTECTED] #getLowercaseExpandedTerms()} instead
      */
     public boolean getLowercaseWildcardTerms() {
  -    return lowercaseWildcardTerms;
  +    return lowercaseExpandedTerms;
  +  }
  +
  +  /**
  +   * @see #setLowercaseExpandedTerms(boolean)
  +   */
  +  public boolean getLowercaseExpandedTerms() {
  +    return lowercaseExpandedTerms;
     }
   
     /**
  @@ -473,6 +489,10 @@
                                   String part2,
                                   boolean inclusive) throws ParseException
     {
  +    if (lowercaseExpandedTerms) {
  +      part1 = part1.toLowerCase();
  +      part2 = part2.toLowerCase();
  +    }
       try {
         DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
         df.setLenient(true);
  @@ -533,8 +553,8 @@
      */
     protected Query getWildcardQuery(String field, String termStr) throws 
ParseException
     {
  -    if (lowercaseWildcardTerms) {
  -  termStr = termStr.toLowerCase();
  +    if (lowercaseExpandedTerms) {
  +      termStr = termStr.toLowerCase();
       }
       Term t = new Term(field, termStr);
       return new WildcardQuery(t);
  @@ -565,8 +585,8 @@
      */
     protected Query getPrefixQuery(String field, String termStr) throws 
ParseException
     {
  -    if (lowercaseWildcardTerms) {
  -  termStr = termStr.toLowerCase();
  +    if (lowercaseExpandedTerms) {
  +      termStr = termStr.toLowerCase();
       }
       Term t = new Term(field, termStr);
       return new PrefixQuery(t);
  @@ -592,6 +612,9 @@
      */
     protected Query getFuzzyQuery(String field, String termStr, float 
minSimilarity) throws ParseException
     {
  +    if (lowercaseExpandedTerms) {
  +      termStr = termStr.toLowerCase();
  +    }
       Term t = new Term(field, termStr);
       return new FuzzyQuery(t, minSimilarity, fuzzyPrefixLength);
     }
  
  
  
  1.57      +33 -10    
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.56
  retrieving revision 1.57
  diff -u -r1.56 -r1.57
  --- QueryParser.jj    23 Nov 2004 23:13:34 -0000      1.56
  +++ QueryParser.jj    14 Dec 2004 23:02:53 -0000      1.57
  @@ -96,7 +96,7 @@
     /** The actual operator that parser uses to combine query terms */
     private Operator operator = OR_OPERATOR;
   
  -  boolean lowercaseWildcardTerms = true;
  +  boolean lowercaseExpandedTerms = true;
   
     Analyzer analyzer;
     String field;
  @@ -265,18 +265,34 @@
     }
   
     /**
  -   * Whether terms of wildcard and prefix queries are to be automatically
  +   * Whether terms of wildcard, prefix, fuzzy and range queries are to be 
automatically
      * lower-cased or not.  Default is <code>true</code>.
  +   * @deprecated use [EMAIL PROTECTED] #setLowercaseExpandedTerms(boolean)} 
instead
      */
  -  public void setLowercaseWildcardTerms(boolean lowercaseWildcardTerms) {
  -    this.lowercaseWildcardTerms = lowercaseWildcardTerms;
  +  public void setLowercaseWildcardTerms(boolean lowercaseExpandedTerms) {
  +    this.lowercaseExpandedTerms = lowercaseExpandedTerms;
     }
   
     /**
  -   * @see #setLowercaseWildcardTerms(boolean)
  +   * Whether terms of wildcard, prefix, fuzzy and range queries are to be 
automatically
  +   * lower-cased or not.  Default is <code>true</code>.
  +   */
  +  public void setLowercaseExpandedTerms(boolean lowercaseExpandedTerms) {
  +    this.lowercaseExpandedTerms = lowercaseExpandedTerms;
  +  }
  +
  +  /**
  +   * @deprecated use [EMAIL PROTECTED] #getLowercaseExpandedTerms()} instead
      */
     public boolean getLowercaseWildcardTerms() {
  -    return lowercaseWildcardTerms;
  +    return lowercaseExpandedTerms;
  +  }
  +
  +  /**
  +   * @see #setLowercaseExpandedTerms(boolean)
  +   */
  +  public boolean getLowercaseExpandedTerms() {
  +    return lowercaseExpandedTerms;
     }
   
     /**
  @@ -496,6 +512,10 @@
                                   String part2,
                                   boolean inclusive) throws ParseException
     {
  +    if (lowercaseExpandedTerms) {
  +      part1 = part1.toLowerCase();
  +      part2 = part2.toLowerCase();
  +    }
       try {
         DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
         df.setLenient(true);
  @@ -556,8 +576,8 @@
      */
     protected Query getWildcardQuery(String field, String termStr) throws 
ParseException
     {
  -    if (lowercaseWildcardTerms) {
  -  termStr = termStr.toLowerCase();
  +    if (lowercaseExpandedTerms) {
  +      termStr = termStr.toLowerCase();
       }
       Term t = new Term(field, termStr);
       return new WildcardQuery(t);
  @@ -588,8 +608,8 @@
      */
     protected Query getPrefixQuery(String field, String termStr) throws 
ParseException
     {
  -    if (lowercaseWildcardTerms) {
  -  termStr = termStr.toLowerCase();
  +    if (lowercaseExpandedTerms) {
  +      termStr = termStr.toLowerCase();
       }
       Term t = new Term(field, termStr);
       return new PrefixQuery(t);
  @@ -615,6 +635,9 @@
      */
     protected Query getFuzzyQuery(String field, String termStr, float 
minSimilarity) throws ParseException
     {
  +    if (lowercaseExpandedTerms) {
  +      termStr = termStr.toLowerCase();
  +    }
       Term t = new Term(field, termStr);
       return new FuzzyQuery(t, minSimilarity, fuzzyPrefixLength);
     }
  
  
  
  1.34      +27 -1     
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.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- TestQueryParser.java      23 Nov 2004 23:14:31 -0000      1.33
  +++ TestQueryParser.java      14 Dec 2004 23:02:53 -0000      1.34
  @@ -129,7 +129,7 @@
     public void assertWildcardQueryEquals(String query, boolean lowercase, 
String result)
       throws Exception {
       QueryParser qp = getParser(null);
  -    qp.setLowercaseWildcardTerms(lowercase);
  +    qp.setLowercaseExpandedTerms(lowercase);
       Query q = qp.parse(query);
       String s = q.toString("field");
       if (!s.equals(result)) {
  @@ -138,6 +138,16 @@
       }
     }
   
  +  public void assertWildcardQueryEquals(String query, String result) throws 
Exception {
  +    QueryParser qp = getParser(null);
  +    Query q = qp.parse(query);
  +    String s = q.toString("field");
  +    if (!s.equals(result)) {
  +      fail("WildcardQuery /" + query + "/ yielded /" + s + "/, expecting /"
  +          + result + "/");
  +    }
  +  }
  +
     public Query getQueryDOA(String query, Analyzer a)
       throws Exception {
       if (a == null)
  @@ -272,21 +282,37 @@
         * lower-cased with propery parser configuration
         */
   // First prefix queries:
  +    // by default, convert to lowercase:
  +    assertWildcardQueryEquals("Term*", true, "term*");
  +    // explicitly set lowercase:
       assertWildcardQueryEquals("term*", true, "term*");
       assertWildcardQueryEquals("Term*", true, "term*");
       assertWildcardQueryEquals("TERM*", true, "term*");
  +    // explicitly disable lowercase conversion:
       assertWildcardQueryEquals("term*", false, "term*");
       assertWildcardQueryEquals("Term*", false, "Term*");
       assertWildcardQueryEquals("TERM*", false, "TERM*");
   // Then 'full' wildcard queries:
  +    // by default, convert to lowercase:
  +    assertWildcardQueryEquals("Te?m", "te?m");
  +    // explicitly set lowercase:
       assertWildcardQueryEquals("te?m", true, "te?m");
       assertWildcardQueryEquals("Te?m", true, "te?m");
       assertWildcardQueryEquals("TE?M", true, "te?m");
       assertWildcardQueryEquals("Te?m*gerM", true, "te?m*germ");
  +    // explicitly disable lowercase conversion:
       assertWildcardQueryEquals("te?m", false, "te?m");
       assertWildcardQueryEquals("Te?m", false, "Te?m");
       assertWildcardQueryEquals("TE?M", false, "TE?M");
       assertWildcardQueryEquals("Te?m*gerM", false, "Te?m*gerM");
  +//  Fuzzy queries:
  +    assertWildcardQueryEquals("Term~", "term~0.5");
  +    assertWildcardQueryEquals("Term~", true, "term~0.5");
  +    assertWildcardQueryEquals("Term~", false, "Term~0.5");
  +//  Range queries:
  +    assertWildcardQueryEquals("[A TO C]", "[a TO c]");
  +    assertWildcardQueryEquals("[A TO C]", true, "[a TO c]");
  +    assertWildcardQueryEquals("[A TO C]", false, "[A TO C]");
     }
   
     public void testQPA() throws Exception {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to