Author: ssmiweve
Date: 2009-09-18 00:08:54 +0200 (Fri, 18 Sep 2009)
New Revision: 7284
Modified:
branches/2.18/generic.sesam/query-transform-control/src/main/java/no/sesat/search/query/transform/TokenMaskQueryTransformer.java
branches/2.18/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/OverturePPCSearchCommand.java
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/AbstractTokenPredicate.java
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/Categories.java
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/TokenEvaluationEngine.java
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/TokenEvaluationEngineImpl.java
branches/2.18/query-transform-control-spi/src/main/java/no/sesat/search/query/transform/SynonymQueryTransformer.java
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
Log:
strengthen the exception handling from the evaluation process. allows
evaluations to better fail gracefully if any underlying evaluation service is
dead.
Modified:
branches/2.18/generic.sesam/query-transform-control/src/main/java/no/sesat/search/query/transform/TokenMaskQueryTransformer.java
===================================================================
---
branches/2.18/generic.sesam/query-transform-control/src/main/java/no/sesat/search/query/transform/TokenMaskQueryTransformer.java
2009-09-17 08:46:06 UTC (rev 7283)
+++
branches/2.18/generic.sesam/query-transform-control/src/main/java/no/sesat/search/query/transform/TokenMaskQueryTransformer.java
2009-09-17 22:08:54 UTC (rev 7284)
@@ -1,4 +1,4 @@
-/* Copyright (2006-2008) Schibsted ASA
+/* Copyright (2006-2009) Schibsted ASA
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -25,6 +25,7 @@
import no.sesat.search.query.BinaryClause;
import no.sesat.search.query.LeafClause;
import no.sesat.search.query.PhraseClause;
+import no.sesat.search.query.token.EvaluationException;
import no.sesat.search.query.token.TokenEvaluationEngine;
import no.sesat.search.query.token.TokenPredicate;
import no.sesat.search.query.transform.TokenMaskQueryTransformerConfig.Mask;
@@ -137,10 +138,13 @@
final TokenEvaluationEngine engine =
getContext().getTokenEvaluationEngine();
for (TokenPredicate predicate : config.getPredicates()) {
-
- if (engine.evaluateClause(predicate, clause)) {
- transform = true;
- break;
+ try{
+ if (engine.evaluateClause(predicate, clause)) {
+ transform = true;
+ break;
+ }
+ }catch(EvaluationException ie){
+ LOG.error("failed to check predicate" + predicate +" with
evaluateClause " + clause);
}
}
}
@@ -164,10 +168,13 @@
// if the field is the token then mask the field and include
the term.
if(null != clause.getField()){
-
- if(engine.evaluateTerm(predicate, clause.getField())){
- transform = true;
- break;
+ try{
+ if(engine.evaluateTerm(predicate, clause.getField())){
+ transform = true;
+ break;
+ }
+ }catch(EvaluationException ie){
+ LOG.error("failed to check predicate" + predicate +"
with evaluateTerm " + clause.getField());
}
}
}
Modified:
branches/2.18/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/OverturePPCSearchCommand.java
===================================================================
---
branches/2.18/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/OverturePPCSearchCommand.java
2009-09-17 08:46:06 UTC (rev 7283)
+++
branches/2.18/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/OverturePPCSearchCommand.java
2009-09-17 22:08:54 UTC (rev 7284)
@@ -1,5 +1,5 @@
/*
- * Copyright (2005-2008) Schibsted ASA
+ * Copyright (2005-2009) Schibsted ASA
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -21,10 +21,8 @@
import java.io.UnsupportedEncodingException;
import java.net.SocketTimeoutException;
import java.net.URLEncoder;
-
import no.sesat.search.mode.config.OverturePpcCommandConfig;
-import no.sesat.search.query.AndNotClause;
-import no.sesat.search.query.NotClause;
+import no.sesat.search.query.token.EvaluationException;
import no.sesat.search.query.token.TokenPredicate;
import no.sesat.search.query.token.TokenPredicateUtility;
import no.sesat.search.result.BasicResultList;
@@ -32,7 +30,6 @@
import no.sesat.search.result.OvertureSearchResult;
import no.sesat.search.result.ResultItem;
import no.sesat.search.result.ResultList;
-
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -49,8 +46,6 @@
public class OverturePPCSearchCommand extends AbstractYahooSearchCommand {
private static final String OVERTURE_PPC_ELEMENT = "Listing";
- /** @deprecated Old school sitesearches **/
- private static final String SITE_SEARCH_OVERTURE_PARTNER_ID =
"schibstedsok_xml_no_searchbox_imp2";
private static final Logger LOG =
Logger.getLogger(OverturePPCSearchCommand.class);
@@ -67,6 +62,7 @@
setXmlRestful(
new AbstractXmlRestful(cxt) {
+ @Override
public String createRequestURL() {
final OverturePpcCommandConfig ppcConfig
@@ -112,13 +108,20 @@
*
* @return the search result
*/
+ @Override
public ResultList<ResultItem> execute() {
// Need to rerun the token evaluation stuff on the transformed query
// The transformed query does not contain site: and nyhetskilde: which
// could have prevented exact matching in the previous evaluation.
final ReconstructedQuery rq = createQuery(getTransformedQuery());
+ final TokenPredicate predicate =
TokenPredicateUtility.getTokenPredicate("PPCTOPLIST").exactPeer();
+ try {
+ top = rq.getEngine()
+ .evaluateQuery(predicate, rq.getQuery());
- top =
rq.getEngine().evaluateQuery(TokenPredicateUtility.getTokenPredicate("PPCTOPLIST").exactPeer(),
rq.getQuery());
+ } catch (EvaluationException ex) {
+ LOG.error("failed to check predicate" + predicate +" with
evaluateQuery " + rq.getQuery());
+ }
try {
final Document doc = getXmlRestful().getXmlResult();
@@ -156,6 +159,7 @@
}
}
+ @Override
protected BasicResultItem createItem(final Element ppcListing) {
final BasicResultItem item = new BasicResultItem();
@@ -173,17 +177,6 @@
}
@Override
- protected String getPartnerId(){
-
- // FIXME. When the site searches have their own context
- // remove this and use the property partnerId of
OverturePPCConfiguration
- // instead.
- return null != getParameter("ss")
- ? SITE_SEARCH_OVERTURE_PARTNER_ID
- : super.getPartnerId();
- }
-
- @Override
protected String getAffilDataParameter() {
return super.getAffilDataParameter();
}
Modified:
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/AbstractTokenPredicate.java
===================================================================
---
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/AbstractTokenPredicate.java
2009-09-17 08:46:06 UTC (rev 7283)
+++
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/AbstractTokenPredicate.java
2009-09-17 22:08:54 UTC (rev 7284)
@@ -1,4 +1,4 @@
-/* Copyright (2008) Schibsted ASA
+/* Copyright (2008-2009) Schibsted ASA
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -34,7 +34,7 @@
// Static --------------------------------------------------------
- static boolean evaluate(final TokenPredicate token, final Object
evalFactory) {
+ static boolean evaluate(final TokenPredicate token, final Object
evalFactory) throws EvaluationException{
if (!(evalFactory instanceof TokenEvaluationEngine)) {
throw new
IllegalArgumentException(ERR_ARG_NOT_TOKEN_EVALUATOR_FACTORY);
@@ -65,9 +65,16 @@
return name();
}
- public boolean evaluate(final Object evalFactory) {
+ @Override
+ public boolean evaluate(final Object evalFactory)/* throws
EvaluationRuntimeException*/{
- return evaluate(this, evalFactory);
+ try{
+ return evaluate(this, evalFactory);
+ }catch(EvaluationException ie){
+ // unfortunately Predicate.evaluate(..) does not declare to throw
any checked exceptions.
+ // so we must sneak the VeryFastListQueryException through as a
run-time exception.
+ throw new EvaluationRuntimeException(ie);
+ }
}
// Public --------------------------------------------------------
Modified:
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/Categories.java
===================================================================
---
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/Categories.java
2009-09-17 08:46:06 UTC (rev 7283)
+++
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/Categories.java
2009-09-17 22:08:54 UTC (rev 7284)
@@ -1,4 +1,4 @@
-/* Copyright (2008) Schibsted ASA
+/* Copyright (2008-2009) Schibsted ASA
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -549,11 +549,19 @@
TokenPredicateImpl.TOKENS.add(this);
}
- public boolean evaluate(final Object evalFactory) {
+ @Override
+ public boolean evaluate(final Object evalFactory)/* throws
EvaluationRuntimeException*/{
- return AbstractTokenPredicate.evaluate(this, evalFactory);
+ try{
+ return AbstractTokenPredicate.evaluate(this, evalFactory);
+ }catch(EvaluationException ie){
+ // unfortunately Predicate.evaluate(..) does not declare to throw
any checked exceptions.
+ // so we must sneak the VeryFastListQueryException through as a
run-time exception.
+ throw new EvaluationRuntimeException(ie);
+ }
}
+ @Override
public TokenPredicate exactPeer() {
return impl.exactPeer();
Modified:
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/TokenEvaluationEngine.java
===================================================================
---
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/TokenEvaluationEngine.java
2009-09-17 08:46:06 UTC (rev 7283)
+++
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/TokenEvaluationEngine.java
2009-09-17 22:08:54 UTC (rev 7284)
@@ -1,5 +1,5 @@
/*
- * Copyright (2005-2008) Schibsted ASA
+ * Copyright (2005-2009) Schibsted ASA
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -56,12 +56,15 @@
* Evaluator that will return false under all circumstances.
*/
static final TokenEvaluator ALWAYS_FALSE_EVALUATOR = new TokenEvaluator() {
+ @Override
public boolean evaluateToken(final TokenPredicate token, final String
term, final String query) {
return false;
}
+ @Override
public boolean isQueryDependant(final TokenPredicate predicate) {
return false;
}
+ @Override
public Set<String> getMatchValues(final TokenPredicate token, final
String term) {
return Collections.<String>emptySet();
}
@@ -71,12 +74,15 @@
* Evaluator that will return true under all circumstances.
*/
static final TokenEvaluator ALWAYS_TRUE_EVALUATOR = new TokenEvaluator() {
+ @Override
public boolean evaluateToken(final TokenPredicate token, final String
term, final String query) {
return true;
}
+ @Override
public boolean isQueryDependant(final TokenPredicate predicate) {
return false;
}
+ @Override
public Set<String> getMatchValues(final TokenPredicate token, final
String term) {
return Collections.<String>emptySet();
}
@@ -86,13 +92,16 @@
* Evaluator that will throws an EvaluationException under all
circumstances.
*/
static final TokenEvaluator DEAD_EVALUATOR = new TokenEvaluator() {
+ @Override
public boolean evaluateToken(final TokenPredicate token, final String
term, final String query) {
throw new EvaluationRuntimeException(
new EvaluationException("DEAD_EVALUATOR", null));
}
+ @Override
public boolean isQueryDependant(final TokenPredicate predicate) {
return false;
}
+ @Override
public Set<String> getMatchValues(final TokenPredicate token, final
String term) {
return Collections.<String>emptySet();
}
@@ -148,7 +157,7 @@
* @param token
* @return
*/
- boolean evaluate(TokenPredicate token);
+ boolean evaluate(TokenPredicate token) throws EvaluationException;
/** Utility method to perform one-off evaluations on terms from non
RunningQuery threads.
* Typically used by TokenTransformers or performing evaluations on
non-clause oriented strings.
@@ -157,7 +166,7 @@
* @param term
* @return
*/
- boolean evaluateTerm(TokenPredicate predicate, String term);
+ boolean evaluateTerm(TokenPredicate predicate, String term) throws
EvaluationException;
/** Utility method to perform one-off evaluations on clauses from non
RunningQuery threads.
* Typically used by TokenTransformers or performing evaluations on
non-clause oriented strings.
@@ -166,7 +175,7 @@
* @param clause
* @return
*/
- boolean evaluateClause(TokenPredicate predicate, Clause clause);
+ boolean evaluateClause(TokenPredicate predicate, Clause clause) throws
EvaluationException;
/** Utility method to perform one-off evaluations on queries from non
RunningQuery threads.
* Typically used by TokenTransformers or performing evaluations on
non-clause oriented strings.
@@ -175,7 +184,7 @@
* @param query
* @return
*/
- boolean evaluateQuery(TokenPredicate predicate, Query query);
+ boolean evaluateQuery(TokenPredicate predicate, Query query) throws
EvaluationException;
/**
* Getter for property state.
Modified:
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/TokenEvaluationEngineImpl.java
===================================================================
---
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/TokenEvaluationEngineImpl.java
2009-09-17 08:46:06 UTC (rev 7283)
+++
branches/2.18/query-api/src/main/java/no/sesat/search/query/token/TokenEvaluationEngineImpl.java
2009-09-17 22:08:54 UTC (rev 7284)
@@ -1,5 +1,5 @@
/*
- * Copyright (2005-2008) Schibsted ASA
+ * Copyright (2005-2009) Schibsted ASA
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -25,7 +25,6 @@
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.locks.ReentrantReadWriteLock;
-import no.sesat.commons.ioc.BaseContext;
import no.sesat.commons.ioc.ContextWrapper;
import no.sesat.search.query.Clause;
import no.sesat.search.query.Query;
@@ -89,6 +88,7 @@
// Public -----------------------------------------------------
+ @Override
public TokenEvaluator getEvaluator(final TokenPredicate token) throws
EvaluationException {
TokenEvaluator result = null;
@@ -137,86 +137,94 @@
return result;
}
+ @Override
public String getQueryString() {
return context.getQueryString();
}
+ @Override
public Site getSite() {
return context.getSite();
}
- public synchronized boolean evaluateTerm(final TokenPredicate predicate,
final String term) {
+ @Override
+ public synchronized boolean evaluateTerm(
+ final TokenPredicate predicate,
+ final String term) throws EvaluationException{
return evaluateInAnyThread(predicate, new EvaluationState(term,
Collections.EMPTY_SET, Collections.EMPTY_SET));
}
- public synchronized boolean evaluateClause(final TokenPredicate predicate,
final Clause clause) {
+ @Override
+ public synchronized boolean evaluateClause(
+ final TokenPredicate predicate,
+ final Clause clause) throws EvaluationException{
return evaluateInAnyThread(predicate, new EvaluationState(clause));
}
- public synchronized boolean evaluateQuery(final TokenPredicate predicate,
final Query query) {
+ @Override
+ public synchronized boolean evaluateQuery(
+ final TokenPredicate predicate,
+ final Query query) throws EvaluationException{
return evaluateInAnyThread(predicate, query.getEvaluationState());
}
- public boolean evaluate(final TokenPredicate token){
+ @Override
+ public boolean evaluate(final TokenPredicate token) throws
EvaluationException{
// process
if(Thread.currentThread() != getOwningThread()){
throw new
IllegalStateException(ERR_METHOD_CLOSED_TO_OTHER_THREADS);
}
- try{
+ // check that the evaluation hasn't already been done
+ // we can only check against the knownPredicates because with the
possiblePredicates we are not sure whether
+ // the evaluation is for the building of the known and possible
predicate list
+ // (during query parsing)(in which
+ // case we could perform the check) or if we are scoring and need to
know if the
+ // possible predicate is really
+ // applicable now (in the context of the whole query).
+ final Set<TokenPredicate> knownPredicates =
getState().getKnownPredicates();
+ if(null != knownPredicates && knownPredicates.contains(token)){
+ return true;
+ }
- // check that the evaluation hasn't already been done
- // we can only check against the knownPredicates because with the
possiblePredicates we are not sure whether
- // the evaluation is for the building of the known and possible
predicate list
- // (during query parsing)(in which
- // case we could perform the check) or if we are scoring and need
to know if the
- // possible predicate is really
- // applicable now (in the context of the whole query).
- final Set<TokenPredicate> knownPredicates =
getState().getKnownPredicates();
- if(null != knownPredicates && knownPredicates.contains(token)){
- return true;
- }
+ final TokenEvaluator evaluator = getEvaluator(token);
- final TokenEvaluator evaluator = getEvaluator(token);
+ if(null != getState().getTerm()){
- if(null != getState().getTerm()){
+ // Single term or clause evaluation
+ return evaluator.evaluateToken(token, getState().getTerm(),
getQueryString());
- // Single term or clause evaluation
- return evaluator.evaluateToken(token, getState().getTerm(),
getQueryString());
+ }else if(null != getState().getQuery()){
- }else if(null != getState().getQuery()){
+ // Whole query evaluation
+ return getState().getPossiblePredicates().contains(token)
+ && evaluator.evaluateToken(token, null, getQueryString());
- // Whole query evaluation
- return getState().getPossiblePredicates().contains(token)
- && evaluator.evaluateToken(token, null,
getQueryString());
-
- }
-
- }catch(EvaluationException ie){
- // unfortunately Predicate.evaluate(..) does not declare to throw
any checked exceptions.
- // so we must sneak the VeryFastListQueryException through as a
run-time exception.
- throw new EvaluationRuntimeException(ie);
}
throw new IllegalStateException(ERR_ENGINE_MISSING_STATE);
}
+ @Override
public State getState() {
return state;
}
+ @Override
public void setState(final State state) {
this.state = state;
}
// private -----------------------------------------------------
- private boolean evaluateInAnyThread(final TokenPredicate predicate, final
State state) {
+ private boolean evaluateInAnyThread(
+ final TokenPredicate predicate,
+ final State state) throws EvaluationException{
final Thread origThread = owningThread;
try{
Modified:
branches/2.18/query-transform-control-spi/src/main/java/no/sesat/search/query/transform/SynonymQueryTransformer.java
===================================================================
---
branches/2.18/query-transform-control-spi/src/main/java/no/sesat/search/query/transform/SynonymQueryTransformer.java
2009-09-17 08:46:06 UTC (rev 7283)
+++
branches/2.18/query-transform-control-spi/src/main/java/no/sesat/search/query/transform/SynonymQueryTransformer.java
2009-09-17 22:08:54 UTC (rev 7284)
@@ -1,4 +1,4 @@
-/* Copyright (2006-2008) Schibsted ASA
+/* Copyright (2006-2009) Schibsted ASA
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -40,13 +40,14 @@
import no.sesat.search.query.UnaryClause;
import no.sesat.search.query.Query;
import no.sesat.search.query.token.Categories;
+import no.sesat.search.query.token.EvaluationException;
import no.sesat.search.query.token.TokenPredicate;
import no.sesat.search.query.token.TokenPredicateUtility;
import org.apache.log4j.Logger;
/**
+ * @todo move out to generic.sesam/query-transform-control
*
- *
* @version $Id$
*/
public final class SynonymQueryTransformer extends AbstractQueryTransformer {
@@ -173,12 +174,17 @@
for (TokenPredicate predicate : getPredicates()) {
boolean applicable =
clause.getKnownPredicates().contains(predicate);
- // possible predicates depend on placement of terms within the
query.
- // this state can't be assigned to the terms as they are
immutable and
- // re-used across multiple queries at any given time.
- applicable |= clause.getPossiblePredicates().contains(predicate)
- &&
getContext().getTokenEvaluationEngine().evaluateTerm(predicate,
clause.getTerm());
+ try{
+ // possible predicates depend on placement of terms within the
query.
+ // this state can't be assigned to the terms as they are
immutable and
+ // re-used across multiple queries at any given time.
+ applicable |=
clause.getPossiblePredicates().contains(predicate)
+ &&
getContext().getTokenEvaluationEngine().evaluateTerm(predicate,
clause.getTerm());
+ }catch(EvaluationException ie){
+ LOG.error("failed to check possible predicate" + predicate +"
with evaluateTerm " + clause.getTerm());
+ }
+
if (applicable) {
if (isSynonym(getContext().getTransformedTerms().get(clause)))
{
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
2009-09-17 08:46:06 UTC (rev 7283)
+++
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
2009-09-17 22:08:54 UTC (rev 7284)
@@ -1,4 +1,4 @@
-/* Copyright (2006-2008) Schibsted ASA
+/* Copyright (2006-2009) Schibsted ASA
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -74,6 +74,7 @@
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.EvaluationException;
import no.sesat.search.query.token.TokenPredicateUtility;
import no.sesat.search.site.config.SiteClassLoaderFactory;
import no.sesat.search.site.config.Spi;
@@ -175,9 +176,11 @@
// A simple context for QueryTransformerFactory.Context
qtfContext = new QueryTransformerFactory.Context() {
+ @Override
public Site getSite() {
return context.getDataModel().getSite().getSite();
}
+ @Override
public BytecodeLoader newBytecodeLoader(final SiteContext
site, final String name, final String jar) {
return context.newBytecodeLoader(site, name, jar);
}
@@ -186,26 +189,33 @@
// Little more complicated context for QueryBuilder.Context (can be
used for QueryTransformer.Context too)
// dont use ContextWrapper.wrap(..) here as this context really gets
hammered and we want to avoid reflection
queryBuilderContext = new QueryBuilder.Context(){
+ @Override
public Site getSite() {
return datamodel.getSite().getSite();
}
/** @deprecated {...@inheritdoc} **/
+ @Override
public String getTransformedQuery() {
return transformedQuery;
}
+ @Override
public Query getQuery() {
// Important that initialiseQuery() has been called first
return getSearchCommandsQuery();
}
+ @Override
public TokenEvaluationEngine getTokenEvaluationEngine() {
return engine;
}
+ @Override
public void visitXorClause(final Visitor visitor, final
XorClause clause) {
searchCommandsVisitXorClause(visitor, clause);
}
+ @Override
public String getFieldFilter(final LeafClause clause) {
return getSearchCommandsFieldFilter(clause);
}
+ @Override
public String getTransformedTerm(final Clause clause) {
// unable to delegate to getTransformedTerm as it escapes
reserved words
@@ -213,26 +223,33 @@
final String transformedTerm =
transformedTerms.get(clause);
return null != transformedTerm ? transformedTerm :
clause.getTerm();
}
+ @Override
public Collection<String> getReservedWords() {
return getSearchCommandsReservedWords();
}
+ @Override
public String escape(final String word) {
return searchCommandsEscape(word);
}
+ @Override
public Map<Clause, String> getTransformedTerms() {
return getSearchCommandsTransformedTerms();
}
+ @Override
public DocumentLoader newDocumentLoader(SiteContext siteCxt,
String resource, DocumentBuilder builder) {
return cxt.newDocumentLoader(siteCxt, resource, builder);
}
+ @Override
public PropertiesLoader newPropertiesLoader(SiteContext
siteCxt, String resource, Properties properties) {
return cxt.newPropertiesLoader(siteCxt, resource,
properties);
}
+ @Override
public BytecodeLoader newBytecodeLoader(SiteContext
siteContext, String className, String jarFileName) {
return cxt.newBytecodeLoader(siteContext, className,
jarFileName);
}
+ @Override
public DataModel getDataModel() {
return cxt.getDataModel();
}
@@ -314,6 +331,7 @@
// SearchCommand overrides
---------------------------------------------------
+ @Override
public BaseSearchConfiguration getSearchConfiguration() {
return baseSearchConfiguration;
}
@@ -323,6 +341,7 @@
*
* @return
*/
+ @Override
public ResultList<ResultItem> call() {
MDC.put(Site.NAME_KEY, datamodel.getSite().getSite().getName());
@@ -384,6 +403,7 @@
* Inserts an "-1" result list. And does the result handling on it.
* Returns true if cancellation action was taken.
*/
+ @Override
public synchronized boolean handleCancellation() {
if (!completed) {
@@ -403,6 +423,7 @@
/** Has the command been cancelled.
* Calling this method only makes sense once the call() method has been.
**/
+ @Override
public synchronized boolean isCancelled(){
return null == thread && !completed;
}
@@ -601,6 +622,7 @@
: 0;
}
+ @Override
public boolean isPaginated(){
return offsetParameter.isActive();
@@ -620,6 +642,7 @@
return userSortByParameter.getValue();
}
+ @Override
public boolean isUserSortable(){
return userSortByParameter.isActive();
@@ -756,6 +779,7 @@
// queryStr parser
final QueryParser parser = new QueryParserImpl(new
AbstractQueryParserContext() {
+ @Override
public TokenEvaluationEngine getTokenEvaluationEngine() {
return newEngine;
}
@@ -821,6 +845,9 @@
field = fieldFilters.get(fieldFilter);
break;
}
+
+ }catch(EvaluationException ie){
+ LOG.error("failed to check possible predicate with
term " + clause.getField());
} catch (IllegalArgumentException iae) {
LOG.trace(TRACE_NOT_TOKEN_PREDICATE + fieldFilter);
}
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits