Author: ssmiweve
Date: 2009-02-23 13:25:04 +0100 (Mon, 23 Feb 2009)
New Revision: 7205

Modified:
   
branches/2.18/generic.sesam/query-transform-config/src/main/java/no/sesat/search/query/transform/TermPrefixQueryTransformerConfig.java
   
branches/2.18/generic.sesam/query-transform-control/src/main/java/no/sesat/search/query/transform/TermPrefixQueryTransformer.java
Log:
 * Multiple prefixes can be configured with comma seperation.
 * EG prefix="site,domain"
 * By default this writes out (site:term domain:term)
 * but the joining operator can be configured with #setMultiTermJoin(string)


Modified: 
branches/2.18/generic.sesam/query-transform-config/src/main/java/no/sesat/search/query/transform/TermPrefixQueryTransformerConfig.java
===================================================================
--- 
branches/2.18/generic.sesam/query-transform-config/src/main/java/no/sesat/search/query/transform/TermPrefixQueryTransformerConfig.java
      2009-02-19 23:31:35 UTC (rev 7204)
+++ 
branches/2.18/generic.sesam/query-transform-config/src/main/java/no/sesat/search/query/transform/TermPrefixQueryTransformerConfig.java
      2009-02-23 12:25:04 UTC (rev 7205)
@@ -1,5 +1,5 @@
 /*
- * Copyright (2005-2008) Schibsted Søk AS
+ * Copyright (2005-2009) Schibsted Søk AS
  * This file is part of SESAT.
  *
  *   SESAT is free software: you can redistribute it and/or modify
@@ -32,9 +32,10 @@
  *   allows seperate configured prefixes for LeafClauses, IntegerClauses,
  * and PhoneNumberPrefix, UrlClauses, and EmailClauses.
  *
-// * Multiple prefixes can be configured with comma seperation.
-// * EG prefix="site,domain"
-// * By default this writes out (site:term domain:term)
+ * Multiple prefixes can be configured with comma seperation.
+ * EG prefix="site,domain"
+ * By default this writes out (site:term domain:term)
+ * but the joining operator can be configured with #setMultiTermJoin(string)
  *
  * @version $Id$
  */
@@ -46,6 +47,7 @@
     private String phoneNumberPrefix;
     private String numberPrefix;
     private String prefix;
+    private String multiTermJoin;
 
     /**
      * @see #setPrefix(java.lang.String)
@@ -136,6 +138,23 @@
         this.emailPrefix = prefix;
     }
 
+    /**
+     * @see #setMultiTermJoin(java.lang.String)
+     *
+     * @return the multiTermJoin.
+     */
+    public String getMultiTermJoin() {
+        return multiTermJoin;
+    }
+
+    /**
+     * Set the multiTermJoin.
+     * @param multiTermJoin The multiTermJoin.
+     */
+    public void setMultiTermJoin(final String multiTermJoin) {
+        this.multiTermJoin = multiTermJoin;
+    }
+
     @Override
     public TermPrefixQueryTransformerConfig readQueryTransformer(final Element 
qt){
 

Modified: 
branches/2.18/generic.sesam/query-transform-control/src/main/java/no/sesat/search/query/transform/TermPrefixQueryTransformer.java
===================================================================
--- 
branches/2.18/generic.sesam/query-transform-control/src/main/java/no/sesat/search/query/transform/TermPrefixQueryTransformer.java
   2009-02-19 23:31:35 UTC (rev 7204)
+++ 
branches/2.18/generic.sesam/query-transform-control/src/main/java/no/sesat/search/query/transform/TermPrefixQueryTransformer.java
   2009-02-23 12:25:04 UTC (rev 7205)
@@ -1,5 +1,5 @@
 /*
- * Copyright (2005-2008) Schibsted Søk AS
+ * Copyright (2005-2009) Schibsted Søk AS
  * This file is part of SESAT.
  *
  *   SESAT is free software: you can redistribute it and/or modify
@@ -141,10 +141,21 @@
     }
 
     private void addPrefix(final Clause clause, final String prefix) {
+
         final String term = getTransformedTerms().get(clause);
 
         if (term != null && !(term.equals("") || isAlreadyPrefixed(term, 
prefix))) {
-            getTransformedTerms().put(clause, prefix + ':' + term);
+            final String[] prefixArr = prefix.split(",");
+            final StringBuilder builder = new StringBuilder();
+            if(1 < prefixArr.length){ builder.append('('); }
+            for(String p : prefixArr){
+                builder.append(p + ':' + term);
+                if(!p.equals(prefixArr[prefixArr.length-1])){
+                    builder.append(' ' + config.getMultiTermJoin() + ' ');
+                }
+            }
+            if(1 < prefixArr.length){ builder.append(')'); }
+            getTransformedTerms().put(clause, builder.toString());
         }
     }
 

_______________________________________________
Kernel-commits mailing list
Kernel-commits@sesat.no
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to