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