Author: ssmiweve
Date: 2008-10-27 12:04:59 +0100 (Mon, 27 Oct 2008)
New Revision: 6894

Added:
   
trunk/generic.sesam/query-transform-config/src/main/java/no/sesat/search/query/transform/LowercaseQueryTransformerConfig.java
   
trunk/generic.sesam/query-transform-control/src/main/java/no/sesat/search/query/transform/LowercaseQueryTransformer.java
Modified:
   trunk/generic.sesam/war/src/main/conf/modes.xml
Log:
LowercaseQueryTransformer added. Lowercase every character in every term in the 
query (against the Site's locale).
 SEARCH-4933


Added: 
trunk/generic.sesam/query-transform-config/src/main/java/no/sesat/search/query/transform/LowercaseQueryTransformerConfig.java
===================================================================
--- 
trunk/generic.sesam/query-transform-config/src/main/java/no/sesat/search/query/transform/LowercaseQueryTransformerConfig.java
                               (rev 0)
+++ 
trunk/generic.sesam/query-transform-config/src/main/java/no/sesat/search/query/transform/LowercaseQueryTransformerConfig.java
       2008-10-27 11:04:59 UTC (rev 6894)
@@ -0,0 +1,33 @@
+/*
+ * Copyright (2008) Schibsted Søk AS
+ * This file is part of SESAT.
+ *
+ *   SESAT is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU Affero General Public License as published 
by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   SESAT is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU Affero General Public License for more details.
+ *
+ *   You should have received a copy of the GNU Affero General Public License
+ *   along with SESAT.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package no.sesat.search.query.transform;
+
+import 
no.sesat.search.query.transform.AbstractQueryTransformerConfig.Controller;
+
+
+/**
+ * Configuration bean for LowercaseQueryTransformer.
+ *
+ * A transformer to lowercase all character in each term.
+ *
+ * @version $Id$
+ *
+ *
+ */
[EMAIL PROTECTED]("LowercaseQueryTransformer")
+public final class LowercaseQueryTransformerConfig extends 
AbstractQueryTransformerConfig {}


Property changes on: 
trunk/generic.sesam/query-transform-config/src/main/java/no/sesat/search/query/transform/LowercaseQueryTransformerConfig.java
___________________________________________________________________
Name: svn:keywords
   + Id

Added: 
trunk/generic.sesam/query-transform-control/src/main/java/no/sesat/search/query/transform/LowercaseQueryTransformer.java
===================================================================
--- 
trunk/generic.sesam/query-transform-control/src/main/java/no/sesat/search/query/transform/LowercaseQueryTransformer.java
                            (rev 0)
+++ 
trunk/generic.sesam/query-transform-control/src/main/java/no/sesat/search/query/transform/LowercaseQueryTransformer.java
    2008-10-27 11:04:59 UTC (rev 6894)
@@ -0,0 +1,77 @@
+/*
+ * Copyright (2008) Schibsted Søk AS
+ * This file is part of SESAT.
+ *
+ *   SESAT is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU Affero General Public License as published 
by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   SESAT is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU Affero General Public License for more details.
+ *
+ *   You should have received a copy of the GNU Affero General Public License
+ *   along with SESAT.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package no.sesat.search.query.transform;
+
+import java.util.Map;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+import no.sesat.search.query.Clause;
+import no.sesat.search.query.DoubleOperatorClause;
+import no.sesat.search.query.LeafClause;
+import no.sesat.search.query.OperationClause;
+import org.apache.log4j.Logger;
+
+/**
+ * @see LowercaseQueryTransformerConfig
+ *
+ * @version $Id$
+ */
+public final class LowercaseQueryTransformer extends AbstractQueryTransformer {
+
+    private static final Logger LOG = 
Logger.getLogger(LowercaseQueryTransformer.class);
+
+    public LowercaseQueryTransformer(final QueryTransformerConfig config){}
+
+    /**
+     *
+     * @param clause The clause to prefix.
+     */
+    public void visitImpl(final LeafClause clause) {
+
+        final String term = getTransformedTerms().get(clause);
+
+        if(null != term && term.length()>0){
+
+            getTransformedTerms().put(
+                    clause,
+                    
getTransformedTerms().get(clause).toLowerCase(getContext().getSite().getLocale()));
+        }
+    }
+
+    /**
+     *
+     * @param clause The clause to prefix.
+     */
+    public void visitImpl(final DoubleOperatorClause clause) {
+        clause.getFirstClause().accept(this);
+        clause.getSecondClause().accept(this);
+    }
+
+    /**
+     *
+     * @param clause The clause to prefix.
+     */
+    public void visitImpl(final OperationClause clause) {
+        clause.getFirstClause().accept(this);
+    }
+
+    private Map<Clause,String> getTransformedTerms() {
+        return getContext().getTransformedTerms();
+    }
+
+}


Property changes on: 
trunk/generic.sesam/query-transform-control/src/main/java/no/sesat/search/query/transform/LowercaseQueryTransformer.java
___________________________________________________________________
Name: svn:keywords
   + Id

Modified: trunk/generic.sesam/war/src/main/conf/modes.xml
===================================================================
--- trunk/generic.sesam/war/src/main/conf/modes.xml     2008-10-27 11:00:28 UTC 
(rev 6893)
+++ trunk/generic.sesam/war/src/main/conf/modes.xml     2008-10-27 11:04:59 UTC 
(rev 6894)
@@ -280,8 +280,10 @@
                 <term-prefix prefix="list_entry"/>
                 <!-- Strip out the quotes around the phrase -->
                 <regexp regexp="&quot;" replacement=""/>
-                <!-- Escape the whitespace so that solr treats the whole query 
as one token. -->
+                <!-- Escape the whitespace so that solr treats the whole query 
as one token -->
                 <regexp regexp=" " replacement="\\ "/>
+                <!-- Lowercase the query as the upcoming wildcard will disable 
all lucene analyzers -->
+                <lowercase/>
                 <!-- Suffix the query with a wildcard. Otherwise it wouldn't 
be a suggestion ;-) -->
                 <regexp regexp="$" replacement="*"/>
             </query-transformers>

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to