Author: ssmiweve
Date: 2008-11-16 23:01:03 +0100 (Sun, 16 Nov 2008)
New Revision: 6938

Modified:
   
trunk/generic.sesam/search-command-config/src/main/java/no/sesat/search/mode/config/SolrCommandConfig.java
   
trunk/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/SolrSearchCommand.java
   trunk/generic.sesam/sesam.com/war/src/main/conf/modes.xml
Log:
make the query addition a "filter query" which solr takes as a separate 
parameter and can perform better caching around


Modified: 
trunk/generic.sesam/search-command-config/src/main/java/no/sesat/search/mode/config/SolrCommandConfig.java
===================================================================
--- 
trunk/generic.sesam/search-command-config/src/main/java/no/sesat/search/mode/config/SolrCommandConfig.java
  2008-11-16 21:53:47 UTC (rev 6937)
+++ 
trunk/generic.sesam/search-command-config/src/main/java/no/sesat/search/mode/config/SolrCommandConfig.java
  2008-11-16 22:01:03 UTC (rev 6938)
@@ -44,7 +44,7 @@
      */
     private String serverUrl = "";
 
-    private String querySuffix = "";
+    private String filteringQuery = "";
 
     // Static --------------------------------------------------------
 
@@ -64,23 +64,31 @@
     }
 
     /**
-     * Setter for property serverUrl.
+     * @see #getServerUrl()
      * @param serverUrl New value of property serverUrl.
      */
     public void setServerUrl(final String serverUrl) {
         this.serverUrl = serverUrl;
     }
 
-    public String getQuerySuffix(){
-        return querySuffix;
+    /** The filter query.
+     * Used like an additional filter to narrow the query down.
+     * @see org.apache.solr.client.solrj.SolrQuery#setFilterQueries(String...)
+     *
+     * TODO change bean property from String to String[] to support multiple 
filtering queries.
+     *
+     * @return
+     */
+    public String getFilteringQuery(){
+        return filteringQuery;
     }
 
-    /** A string to append to every query. Used as an additional filter.
+    /** @see #getFilteringQuery()
      *
-     * @param querySuffix
+     * @param filteringQuery
      */
-    public void setQuerySuffix(final String querySuffix){
-        this.querySuffix = querySuffix;
+    public void setFilteringQuery(final String filteringQuery){
+        this.filteringQuery = filteringQuery;
     }
 
     // Z implementation ----------------------------------------------

Modified: 
trunk/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/SolrSearchCommand.java
===================================================================
--- 
trunk/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/SolrSearchCommand.java
        2008-11-16 21:53:47 UTC (rev 6937)
+++ 
trunk/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/SolrSearchCommand.java
        2008-11-16 22:01:03 UTC (rev 6938)
@@ -17,9 +17,13 @@
  */
 package no.sesat.search.mode.command;
 
+import java.lang.ref.Reference;
 import java.net.MalformedURLException;
 import java.util.Map;
-import no.sesat.search.mode.config.SearchConfiguration;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+import no.sesat.commons.ref.ReferenceMap;
 import no.sesat.search.mode.config.SolrCommandConfig;
 import no.sesat.search.result.BasicResultItem;
 import no.sesat.search.result.BasicResultList;
@@ -55,6 +59,10 @@
 
     // Static --------------------------------------------------------
 
+    private static final ReferenceMap<String,SolrServer> SERVERS = new 
ReferenceMap<String,SolrServer>(
+            ReferenceMap.Type.SOFT,
+            new ConcurrentHashMap<String, Reference<SolrServer>>());
+
     // Constructors --------------------------------------------------
 
     public SolrSearchCommand(final Context cxt) {
@@ -62,10 +70,17 @@
         super(cxt);
         try {
 
-            final String serverUrl = 
((SolrCommandConfig)cxt.getSearchConfiguration()).getServerUrl();
+            final String serverUrlKey = 
((SolrCommandConfig)cxt.getSearchConfiguration()).getServerUrl();
             final SiteConfiguration siteConf = 
cxt.getDataModel().getSite().getSiteConfiguration();
-            server = new 
CommonsHttpSolrServer(siteConf.getProperty(serverUrl));
+            final String serverUrl = siteConf.getProperty(serverUrlKey);
 
+            server = SERVERS.get(serverUrl);
+
+            if(null == server){
+                server = new CommonsHttpSolrServer(serverUrl);
+                SERVERS.put(serverUrl, server);
+            }
+
         } catch (MalformedURLException ex) {
             LOG.error(ex.getMessage(), ex);
         }
@@ -82,6 +97,7 @@
             // set up query
             final SolrQuery query = new SolrQuery()
                     .setQuery(getTransformedQuery())
+                    
.setFilterQueries(getSearchConfiguration().getFilteringQuery())
                     .setStart(getOffset())
                     .setRows(getSearchConfiguration().getResultsToReturn())
                     
.setFields(getSearchConfiguration().getResultFieldMap().keySet().toArray(new 
String[]{}));
@@ -107,11 +123,6 @@
     }
 
     @Override
-    public String getTransformedQuery() {
-        return super.getTransformedQuery() + 
getSearchConfiguration().getQuerySuffix();
-    }
-
-    @Override
     public SolrCommandConfig getSearchConfiguration() {
         return (SolrCommandConfig)super.getSearchConfiguration();
     }

Modified: trunk/generic.sesam/sesam.com/war/src/main/conf/modes.xml
===================================================================
--- trunk/generic.sesam/sesam.com/war/src/main/conf/modes.xml   2008-11-16 
21:53:47 UTC (rev 6937)
+++ trunk/generic.sesam/sesam.com/war/src/main/conf/modes.xml   2008-11-16 
22:01:03 UTC (rev 6938)
@@ -59,7 +59,7 @@
 
     <mode id="solrSuggestions" inherit="solrSuggestions">
         <solr-command id="solrSuggestions"
-            query-suffix=" AND list_name:common_english"
+            filtering-query="list_name:common_english"
             inherit="solrSuggestions"/>
      </mode>
 

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

Reply via email to