Author: knguyen
Date: Fri Jul 13 16:05:48 2007
New Revision: 18005

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18005&repname=
=3Djahia
Log:
SEARCH-88: fix search number

Modified:
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/search/Nu=
mberPadding.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/search/co=
mpass/LuceneResourceForHighLighting.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/search/lu=
cene/JahiaLuceneQueryParser.java

Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/sea=
rch/NumberPadding.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/search/NumberPadding.java&rev=3D18=
005&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/search/Nu=
mberPadding.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/search/Nu=
mberPadding.java Fri Jul 13 16:05:48 2007
@@ -58,6 +58,7 @@
                         continue;
                     } else {
                         buffer.append(chars[i]);
+                        unpadded =3D true;
                     }
                 }
                 buffer.append(str.charAt(str.length()-1));

Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/sea=
rch/compass/LuceneResourceForHighLighting.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/search/compass/LuceneResourceForHi=
ghLighting.java&rev=3D18005&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/search/co=
mpass/LuceneResourceForHighLighting.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/search/co=
mpass/LuceneResourceForHighLighting.java Fri Jul 13 16:05:48 2007
@@ -79,7 +79,7 @@
                 f =3D (Field)it.next();
                 value =3D f.stringValue();
                 value =3D NumberPadding.unpad(value);
-                if ( !NumberUtils.isNumber(value) && !"".equals(value.trim=
())){
+                if ( !"".equals(value.trim())){
                     result.append(value);
                     result.append("                                       =
 ...");
                 }
@@ -89,10 +89,8 @@
             for ( int i=3D0; i<values.length; i++ ){
                 value =3D values[i];
                 value =3D NumberPadding.unpad(value);
-                if ( !NumberUtils.isNumber(value) ){
-                    result.append(value);
-                    result.append("                                       =
               ...");
-                }
+                result.append(value);
+                result.append("                                           =
           ...");
             }
             value =3D result.toString();
         }

Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/sea=
rch/lucene/JahiaLuceneQueryParser.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/search/lucene/JahiaLuceneQueryPars=
er.java&rev=3D18005&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/search/lu=
cene/JahiaLuceneQueryParser.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/search/lu=
cene/JahiaLuceneQueryParser.java Fri Jul 13 16:05:48 2007
@@ -63,12 +63,15 @@
     }
 =

     protected Query getFieldQuery(String field, String queryText, int slop=
) throws ParseException {
-        queryText =3D NumberPadding.pad(queryText);
+        String paddedText =3D NumberPadding.pad(queryText);
+        queryText =3D NumberPadding.unpad(queryText);
+        boolean addPadded =3D !paddedText.equals(queryText);
         Float boost =3D null;
         if ( field !=3D null ){
             List l =3D (List)this.fieldsGrouping.get(field);
             if (l !=3D null && !l.isEmpty() ) {
                 Query q =3D null;
+                Query paddedQuery =3D null;
                 Vector clauses =3D new Vector();
                 Iterator iterator =3D l.iterator();
                 String value =3D null;
@@ -77,17 +80,33 @@
                     boost =3D (Float)this.fieldsScoreBoost.get(value);
                     q =3D  super.getFieldQuery(value, queryText);
                     if ( q !=3D null ){
+                        if ( addPadded ){
+                            paddedQuery =3D super.getFieldQuery(value, pad=
dedText);
+                        }
                         if ( boost !=3D null ){
                             q.setBoost(boost.floatValue());
+                            if ( addPadded ){
+                                paddedQuery.setBoost(boost.floatValue());
+                            }
                         }
                         if (q instanceof PhraseQuery) {
                           ((PhraseQuery) q).setSlop(slop);
+                          if ( addPadded ){
+                              ((PhraseQuery) paddedQuery).setSlop(slop);
+                          }
                         }
                         if (q instanceof MultiPhraseQuery) {
                           ((MultiPhraseQuery) q).setSlop(slop);
+                          if ( addPadded ) {
+                              ((MultiPhraseQuery) paddedQuery).setSlop(slo=
p);
+                          }
                         }
                         clauses.add(new BooleanClause(q,
                                 BooleanClause.Occur.SHOULD));
+                        if ( addPadded ){
+                            clauses.add(new BooleanClause(paddedQuery,
+                                    BooleanClause.Occur.SHOULD));
+                        }
                     }
                 }
                 if (clauses.size() =3D=3D 0)  // happens for stopwords
@@ -95,6 +114,19 @@
                 return getBooleanQuery(clauses, true);
             }
         }
+        if ( !queryText.equals(paddedText) ){
+            Query q =3D null;
+            Query paddedQuery =3D null;
+            Vector clauses =3D new Vector();
+            q =3D super.getFieldQuery(field, queryText);
+            paddedQuery =3D super.getFieldQuery(field, paddedText);
+            clauses.add(new BooleanClause(q,
+                    BooleanClause.Occur.SHOULD));
+            clauses.add(new BooleanClause(paddedQuery,
+                    BooleanClause.Occur.SHOULD));
+            return getBooleanQuery(clauses, true);
+        }
+
         return super.getFieldQuery(field, queryText);
     }
 =

@@ -114,79 +146,149 @@
     protected Query getFuzzyQuery(String field, String termStr, float minS=
imilarity) throws ParseException
     {
         Float boost =3D null;
+        String paddedText =3D NumberPadding.pad(termStr);
+        String queryText =3D NumberPadding.unpad(termStr);
+        boolean addPadded =3D !paddedText.equals(queryText);
         if ( field !=3D null ){
             List l =3D (List)this.fieldsGrouping.get(field);
             if (l !=3D null && !l.isEmpty() ) {
                 Query q =3D null;
+                Query paddedQ =3D null;
                 Vector clauses =3D new Vector();
                 Iterator iterator =3D l.iterator();
                 String value =3D null;
                 while ( iterator.hasNext() ){
                     value =3D (String)iterator.next();
                     boost =3D (Float)this.fieldsScoreBoost.get(value);
-                    q =3D super.getFuzzyQuery(value, termStr, minSimilarit=
y);
+                    q =3D super.getFuzzyQuery(value, queryText, minSimilar=
ity);
+                    if ( addPadded ){
+                        paddedQ =3D super.getFuzzyQuery(value, paddedText,=
 minSimilarity);
+                    }
                     if ( boost !=3D null ){
                         q.setBoost(boost.floatValue());
+                        if ( addPadded ){
+                            paddedQ.setBoost(boost.floatValue());
+                        }
                     }
                     clauses.add(new BooleanClause(q,
                             BooleanClause.Occur.SHOULD));
+                    if ( addPadded ){
+                        clauses.add(new BooleanClause(paddedQ,
+                                BooleanClause.Occur.SHOULD));
+                    }
                 }
                 return getBooleanQuery(clauses, true);
             }
         }
+        if ( addPadded ){
+            Query q =3D super.getFuzzyQuery(field, queryText, minSimilarit=
y);
+            Query paddedQ =3D super.getFuzzyQuery(field, paddedText, minSi=
milarity);
+            Vector clauses =3D new Vector();
+            clauses.add(new BooleanClause(q,
+                    BooleanClause.Occur.SHOULD));
+            clauses.add(new BooleanClause(paddedQ,
+                    BooleanClause.Occur.SHOULD));
+            return getBooleanQuery(clauses, true);
+        }
         return super.getFuzzyQuery(field, termStr, minSimilarity);
     }
 =

     protected Query getPrefixQuery(String field, String termStr) throws Pa=
rseException
     {
-        Query analyzedQuery =3D super.getFieldQuery(field, termStr);
         termStr =3D LanguageIndependantFilter.format(termStr);
+        String paddedText =3D NumberPadding.pad(termStr);
+        String queryText =3D NumberPadding.unpad(termStr);
+        boolean addPadded =3D !paddedText.equals(queryText);
         Float boost =3D null;
         if ( field !=3D null ){
             List l =3D (List)this.fieldsGrouping.get(field);
             if (l !=3D null && !l.isEmpty() ) {
                 Query q =3D null;
+                Query paddedQ =3D null;
                 Vector clauses =3D new Vector();
                 Iterator iterator =3D l.iterator();
                 String value =3D null;
                 while ( iterator.hasNext() ){
                     value =3D (String)iterator.next();
                     boost =3D (Float)this.fieldsScoreBoost.get(value);
-                    q =3D super.getPrefixQuery(value, termStr);
+                    q =3D super.getPrefixQuery(value, queryText);
+                    if ( addPadded ){
+                        paddedQ =3D super.getPrefixQuery(value, paddedText=
);
+                    }
                     if ( boost !=3D null ){
                         q.setBoost(boost.floatValue());
+                        if ( addPadded ){
+                            paddedQ.setBoost(boost.floatValue());
+                        }
                     }
                     clauses.add(new BooleanClause(q,
                             BooleanClause.Occur.SHOULD));
+                    if ( addPadded ){
+                        clauses.add(new BooleanClause(paddedQ,
+                                BooleanClause.Occur.SHOULD));
+                    }
                 }
                 return getBooleanQuery(clauses, true);
             }
         }
+        if ( addPadded ){
+            Query q =3D super.getPrefixQuery(field, queryText);
+            Query paddedQ =3D super.getPrefixQuery(field, paddedText);
+            Vector clauses =3D new Vector();
+            clauses.add(new BooleanClause(q,
+                    BooleanClause.Occur.SHOULD));
+            clauses.add(new BooleanClause(paddedQ,
+                    BooleanClause.Occur.SHOULD));
+        }
         return super.getPrefixQuery(field, termStr);
     }
 =

     protected Query getWildcardQuery(String field, String termStr) throws =
ParseException {
         Float boost =3D null;
+        String paddedText =3D NumberPadding.pad(termStr);
+        String queryText =3D NumberPadding.unpad(termStr);
+        boolean addPadded =3D !paddedText.equals(queryText);
         if ( field !=3D null ){
             List l =3D (List)this.fieldsGrouping.get(field);
             if (l !=3D null && !l.isEmpty() ) {
                 Query q =3D null;
+                Query paddedQ =3D null;
                 Vector clauses =3D new Vector();
                 Iterator iterator =3D l.iterator();
                 String value =3D null;
                 while ( iterator.hasNext() ){
                     value =3D (String)iterator.next();
                     boost =3D (Float)this.fieldsScoreBoost.get(value);
-                    q =3D super.getWildcardQuery(value, termStr);
+                    q =3D super.getWildcardQuery(value, queryText);
+                    if ( addPadded ){
+                        paddedQ =3D super.getWildcardQuery(value, paddedTe=
xt);
+                    }
                     if ( boost !=3D null ){
                         q.setBoost(boost.floatValue());
+                        if ( addPadded ){
+                            paddedQ.setBoost(boost.floatValue());
+                        }
                     }
                     clauses.add(new BooleanClause(q,
                             BooleanClause.Occur.SHOULD));
+                    if ( addPadded ){
+                        clauses.add(new BooleanClause(paddedQ,
+                            BooleanClause.Occur.SHOULD));
+                    }
                 }
                 return getBooleanQuery(clauses, true);
             }
         }
+        if ( addPadded ){
+            Query q =3D super.getWildcardQuery(field, queryText);
+            Query paddedQ =3D super.getWildcardQuery(field, paddedText);
+            Vector clauses =3D new Vector();
+            clauses.add(new BooleanClause(q,
+                    BooleanClause.Occur.SHOULD));
+            clauses.add(new BooleanClause(paddedQ,
+                BooleanClause.Occur.SHOULD));
+            return getBooleanQuery(clauses, true);
+        }
         return super.getWildcardQuery(field, termStr);
     }
 =


_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to