Author: ssmiweve
Date: 2008-12-15 00:03:08 +0100 (Mon, 15 Dec 2008)
New Revision: 7084
Modified:
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
Log:
Issue SKER5025: (Promote CorrectingFastSearchCommand)
Modified:
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
===================================================================
---
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
2008-12-13 22:31:34 UTC (rev 7083)
+++
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
2008-12-14 23:03:08 UTC (rev 7084)
@@ -73,6 +73,7 @@
import no.sesat.search.mode.command.querybuilder.SesamSyntaxQueryBuilder;
import no.sesat.search.mode.config.querybuilder.QueryBuilderConfig;
import no.sesat.search.mode.config.querybuilder.QueryBuilderConfig.Controller;
+import no.sesat.search.query.token.DeadTokenEvaluationEngineImpl;
import no.sesat.search.query.token.TokenPredicateUtility;
import no.sesat.search.site.config.SiteClassLoaderFactory;
import no.sesat.search.site.config.Spi;
@@ -693,58 +694,85 @@
}
/**
- * XXX Very expensive method to call!
+ * Uses QueryParser to create a new Query with all evaluation enabled.
*
- * @param queryString
- * @return
+ * XXX Very expensive method to call! Consider disabling evaluation.
+ *
+ * @param queryString the new query string to parse.
+ * @return newly constructed Query.
*/
protected final ReconstructedQuery createQuery(final String queryString) {
+ return createQuery(queryString, true);
+ }
+
+ /**
+ * Uses QueryParser to create a new Query with the option to disable
evaluation.
+ *
+ * XXX Very expensive method to call! It helps to disable evaluation.
+ *
+ * @param queryString the new query string to parse.
+ * @param evaluationEnabled whether to enable evaluation. if false the
DeadTokenEvaluationEngineImpl is used.
+ * @return newly constructed Query.
+ */
+ protected final ReconstructedQuery createQuery(final String queryString,
final boolean evaluationEnabled) {
+
LOG.debug("createQuery(" + queryString + ')');
- if
(datamodel.getQuery().getQuery().getQueryString().equalsIgnoreCase(queryString))
{
+ ReconstructedQuery reconstructedQuery = null;
+ if
(datamodel.getQuery().getQuery().getQueryString().trim().equalsIgnoreCase(queryString.trim()))
{
+
// return original query and engine
- return new ReconstructedQuery(datamodel.getQuery().getQuery(),
context.getTokenEvaluationEngine());
+ reconstructedQuery = new ReconstructedQuery(
+ datamodel.getQuery().getQuery(),
+ context.getTokenEvaluationEngine());
} else {
- final TokenEvaluationEngine.Context tokenEvalFactoryCxt =
ContextWrapper.wrap(
- TokenEvaluationEngine.Context.class,
- context,
- new BaseContext() {
- public String getQueryString() {
- return queryString;
+ final TokenEvaluationEngine newEngine;
+
+ if(evaluationEnabled){
+
+ final TokenEvaluationEngine.Context tokenEvalFactoryCxt =
ContextWrapper.wrap(
+ TokenEvaluationEngine.Context.class,
+ context,
+ new BaseContext() {
+ public String getQueryString() {
+ return queryString;
+ }
+ public Site getSite() {
+ return datamodel.getSite().getSite();
+ }
+ public String getUniqueId(){
+ return datamodel.getParameters().getUniqueId();
+ }
}
- public Site getSite() {
- return datamodel.getSite().getSite();
- }
- public String getUniqueId(){
- return datamodel.getParameters().getUniqueId();
- }
- }
- );
+ );
- // This will among other things perform the initial fast search
- // for textual analysis.
- final TokenEvaluationEngine engine = new
TokenEvaluationEngineImpl(tokenEvalFactoryCxt);
+ // This will among other things perform the evaluator searches
- local and remote.
+ newEngine = new TokenEvaluationEngineImpl(tokenEvalFactoryCxt);
+ }else{
+ // no evaluators will be called.
+ newEngine = new DeadTokenEvaluationEngineImpl(queryString,
datamodel.getSite().getSite());
+ }
// queryStr parser
final QueryParser parser = new QueryParserImpl(new
AbstractQueryParserContext() {
public TokenEvaluationEngine getTokenEvaluationEngine() {
- return engine;
+ return newEngine;
}
});
try {
- return new ReconstructedQuery(parser.getQuery(), engine);
+ reconstructedQuery = new ReconstructedQuery(parser.getQuery(),
engine);
} catch (TokenMgrError ex) {
// Errors (as opposed to exceptions) are fatal.
LOG.fatal(ERR_PARSING, ex);
}
}
- return null;
+ return reconstructedQuery;
}
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits