Author: mickw
Date: 2006-04-06 21:10:18 +0200 (Thu, 06 Apr 2006)
New Revision: 2742

Modified:
   
trunk/src/java/no/schibstedsok/front/searchportal/query/transform/SynonymQueryTransformer.java
Log:
use the new tickers.properties


Modified: 
trunk/src/java/no/schibstedsok/front/searchportal/query/transform/SynonymQueryTransformer.java
===================================================================
--- 
trunk/src/java/no/schibstedsok/front/searchportal/query/transform/SynonymQueryTransformer.java
      2006-04-06 19:09:24 UTC (rev 2741)
+++ 
trunk/src/java/no/schibstedsok/front/searchportal/query/transform/SynonymQueryTransformer.java
      2006-04-06 19:10:18 UTC (rev 2742)
@@ -7,21 +7,60 @@
 
 package no.schibstedsok.front.searchportal.query.transform;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import no.schibstedsok.front.searchportal.query.DefaultOperatorClause;
 import no.schibstedsok.front.searchportal.query.LeafClause;
 import no.schibstedsok.front.searchportal.query.token.TokenPredicate;
+import org.apache.log4j.Logger;
 
 /**
  *
  * @author maek
  */
 public final class SynonymQueryTransformer extends AbstractQueryTransformer {
+
+    private static final Logger LOG = 
Logger.getLogger(SynonymQueryTransformer.class);
+    private static final String ERR_FAILED_LOADING_TICKER_MAP = "Failed to 
load tickers";
+
+    private static final Map<String,String> SYNONYMS;
+    private static final Map<String,String> REVERSE_SYNONYMS;
+
+    static{
+
+        final Map<String,String> synonyms = new HashMap<String,String>();
+        final Map<String,String> reverseSynonyms = new 
HashMap<String,String>();
+
+        try{
+            final Properties props = new Properties();
+            
props.load(SynonymQueryTransformer.class.getResourceAsStream("/tickers.properties"));
+
+            for( Map.Entry<Object,Object> entry : props.entrySet()){
+
+                final String key = ((String)entry.getKey()).toLowerCase();
+                final String value = ((String)entry.getValue()).toLowerCase();
+                synonyms.put( key, value );
+                reverseSynonyms.put( value, key );
+            }
+
+        }catch(IOException ioe){
+            LOG.info(ERR_FAILED_LOADING_TICKER_MAP, ioe);
+        }finally{
+
+            SYNONYMS = Collections.unmodifiableMap(synonyms);
+            REVERSE_SYNONYMS = Collections.unmodifiableMap(reverseSynonyms);
+        }
+    }
     
     /** Synonym expansion are only performed for clauses matching the 
predicates
      * contained in predicateNames */
@@ -120,23 +159,17 @@
     }
     
     private boolean isSynonym(String string) {
-        return string.trim().equalsIgnoreCase("sch") || 
string.trim().equalsIgnoreCase("schibsted") || 
string.trim().equalsIgnoreCase("schibsted asa");
+
+        final String s = string.toLowerCase();
+        return SYNONYMS.containsKey(s) || REVERSE_SYNONYMS.containsKey(s);
     }
     
-    private String getSynonym(String string) {
-        if (string.trim().equalsIgnoreCase("sch")) {
-            return "schibsted";
-        }
-        
-        if (string.trim().equalsIgnoreCase("schibsted")) {
-            return "sch";
-        }
-        
-        if (string.trim().equalsIgnoreCase("schibsted asa")) {
-            return "schasa";
-        }
-        
-        return null;
+    private String getSynonym(final String string) {
+
+        final String s = string.toLowerCase();
+        return SYNONYMS.containsKey(s)
+                ? SYNONYMS.get(s)
+                : REVERSE_SYNONYMS.get(s);
     }
     
     public Object clone() throws CloneNotSupportedException {
@@ -149,4 +182,8 @@
         
         return retValue;
     }
+
+    public StringBuilder getBuilder() {
+        return builder;
+    }
 }

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

Reply via email to