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