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