Author: ssmiweve
Date: 2008-12-15 22:50:15 +0100 (Mon, 15 Dec 2008)
New Revision: 7106

Modified:
   
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/SolrTokenEvaluator.java
   
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/VeryFastTokenEvaluator.java
Log:
undo part of r7038
> make the evaluation requests (solr + fast) lazy.
too many places simply use clause.getKnownPredicates().contains(..) which never 
triggers the lazy initialisation

Modified: 
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/SolrTokenEvaluator.java
===================================================================
--- 
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/SolrTokenEvaluator.java
      2008-12-15 17:24:16 UTC (rev 7105)
+++ 
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/SolrTokenEvaluator.java
      2008-12-15 21:50:15 UTC (rev 7106)
@@ -68,7 +68,7 @@
 
     private final Context context;
     private SolrEvaluatorFactory factory;
-    private transient Map<String, List<TokenMatch>> analysisResult;
+    private final Map<String, List<TokenMatch>> analysisResult;
 
     // Static --------------------------------------------------------
 
@@ -89,6 +89,7 @@
         context = cxt;
         this.factory = factory;
 
+        analysisResult = query(cleanString(context.getQueryString()));
     }
 
     // Public --------------------------------------------------------
@@ -104,8 +105,6 @@
 
                 final String listname = listnames[i];
 
-                if(null == analysisResult){ analysisResult = 
query(cleanString(context.getQueryString())); }
-
                 if (analysisResult.containsKey(listname)) {
                     if (term == null) {
                         evaluation = true;
@@ -150,8 +149,6 @@
             for(int i = 0; i < listnames.length; i++){
                 final String listname = listnames[i];
 
-                if(null == analysisResult){ analysisResult = 
query(cleanString(context.getQueryString())); }
-
                 if (analysisResult.containsKey(listname)) {
 
                     // HACK since DefaultOperatorClause wraps its children in 
parenthesis
@@ -192,7 +189,7 @@
      * @param query
      */
     @SuppressWarnings("unchecked")
-    private synchronized Map<String, List<TokenMatch>> query(final String 
query){
+    private Map<String, List<TokenMatch>> query(final String query) throws 
EvaluationException{
 
         LOG.trace("queryFast( " + query + " )");
         Map<String, List<TokenMatch>> result = null;
@@ -262,12 +259,10 @@
                             solrQuery.setRows(rest);
                             // query
                             response = 
factory.getSolrServer().query(solrQuery);
-                        }
-                        else {
+                        }else {
                             more = false;
                         }
-                    }
-                    while (more);
+                    }while (more);
 
 
                     result = Collections.unmodifiableMap(result);
@@ -276,7 +271,7 @@
 
                 } catch (SolrServerException ex) {
                     LOG.error(ex.getMessage(), ex);
-                    throw new EvaluationRuntimeException(new 
EvaluationException(ERR_QUERY_FAILED + url, ex));
+                    throw new EvaluationException(ERR_QUERY_FAILED + url, ex);
 
                 }finally{
                     if(!updatedCache){

Modified: 
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/VeryFastTokenEvaluator.java
===================================================================
--- 
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/VeryFastTokenEvaluator.java
  2008-12-15 17:24:16 UTC (rev 7105)
+++ 
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/VeryFastTokenEvaluator.java
  2008-12-15 21:50:15 UTC (rev 7106)
@@ -105,7 +105,7 @@
 
     private final Context context;
     private final Site site;
-    private transient Map<String, List<TokenMatch>> analysisResult;
+    private final Map<String, List<TokenMatch>> analysisResult;
 
     // Static --------------------------------------------------------
 
@@ -128,6 +128,7 @@
 
         init();
 
+        analysisResult = queryFast(cleanString(context.getQueryString()));
     }
 
     // Public --------------------------------------------------------
@@ -142,8 +143,6 @@
 
                 final String listname = listnames[i];
 
-                if(null == analysisResult){ analysisResult = 
queryFast(cleanString(context.getQueryString())); }
-
                 if (analysisResult.containsKey(listname)) {
                     if (term == null) {
                         evaluation = true;
@@ -180,8 +179,6 @@
             for(int i = 0; i < listnames.length; i++){
                 final String listname = listnames[i];
 
-                if(null == analysisResult){ analysisResult = 
queryFast(cleanString(context.getQueryString())); }
-
                 if (analysisResult.containsKey(listname)) {
 
                     // HACK since DefaultOperatorClause wraps its children in 
parenthesis
@@ -321,7 +318,7 @@
      * @param query
      */
     @SuppressWarnings("unchecked")
-    private synchronized Map<String, List<TokenMatch>> queryFast(final String 
query){
+    private Map<String, List<TokenMatch>> queryFast(final String query) throws 
EvaluationException{
 
         LOG.trace("queryFast( " + query + " )");
         Map<String, List<TokenMatch>> result = null;
@@ -401,11 +398,11 @@
                 } catch (IOException e1) {
                     LOG.error(ERR_QUERY_FAILED + url, e1);
                     result = (Map<String, 
List<TokenMatch>>)nre.getCacheContent();
-                    throw new EvaluationRuntimeException(new 
EvaluationException(ERR_QUERY_FAILED + url, e1));
+                    throw new EvaluationException(ERR_QUERY_FAILED + url, e1);
                 } catch (SAXException e1) {
                     LOG.error(ERR_PARSE_FAILED + url, e1);
                     result = (Map<String, 
List<TokenMatch>>)nre.getCacheContent();
-                    throw new EvaluationRuntimeException(new 
EvaluationException(ERR_PARSE_FAILED + url, e1));
+                    throw new EvaluationException(ERR_PARSE_FAILED + url, e1);
                 }finally{
                     if(!updatedCache){
                         CACHE_QUERY.cancelUpdate(query);

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

Reply via email to