diff --git a/src/main/java/org/codelibs/fess/helper/QueryHelper.java b/src/main/java/org/codelibs/fess/helper/QueryHelper.java index 05f556e16..d2013a52e 100644 --- a/src/main/java/org/codelibs/fess/helper/QueryHelper.java +++ b/src/main/java/org/codelibs/fess/helper/QueryHelper.java @@ -53,6 +53,7 @@ import org.codelibs.fess.entity.GeoInfo; import org.codelibs.fess.entity.QueryContext; import org.codelibs.fess.exception.InvalidQueryException; import org.codelibs.fess.mylasta.direction.FessConfig; +import org.codelibs.fess.util.ComponentUtil; import org.codelibs.fess.util.StreamUtil; import org.dbflute.optional.OptionalThing; import org.elasticsearch.common.unit.Fuzziness; @@ -92,9 +93,6 @@ public class QueryHelper implements Serializable { @Resource protected KeyMatchHelper keyMatchHelper; - @Resource - protected QueryParser queryParser; - protected Set apiResponseFieldSet; protected Set highlightFieldSet = new HashSet<>(); @@ -243,7 +241,7 @@ public class QueryHelper implements Serializable { public void buildBaseQuery(final QueryContext queryContext, final Consumer context) { try { - final Query query = queryParser.parse(queryContext.getQueryString()); + final Query query = getQueryParser().parse(queryContext.getQueryString()); final QueryBuilder queryBuilder = convertQuery(queryContext, query); if (queryBuilder != null) { queryContext.setQueryBuilder(queryBuilder); @@ -258,6 +256,10 @@ public class QueryHelper implements Serializable { } } + protected QueryParser getQueryParser() { + return ComponentUtil.getQueryParser(); + } + protected QueryBuilder convertQuery(final QueryContext context, final Query query) { if (query instanceof TermQuery) { return convertTermQuery(context, (TermQuery) query); diff --git a/src/main/java/org/codelibs/fess/util/ComponentUtil.java b/src/main/java/org/codelibs/fess/util/ComponentUtil.java index 4941ef1f0..13a8c5588 100644 --- a/src/main/java/org/codelibs/fess/util/ComponentUtil.java +++ b/src/main/java/org/codelibs/fess/util/ComponentUtil.java @@ -15,6 +15,7 @@ */ package org.codelibs.fess.util; +import org.apache.lucene.queryparser.classic.QueryParser; import org.codelibs.core.crypto.CachedCipher; import org.codelibs.core.misc.DynamicProperties; import org.codelibs.fess.api.WebApiManagerFactory; @@ -57,6 +58,8 @@ import org.lastaflute.job.JobManager; import org.lastaflute.web.servlet.request.RequestManager; public final class ComponentUtil { + private static final String QUERY_PARSER = "queryParser"; + private static final String DOCUMENT_HELPER = "documentHelper"; private static final String ACTIVITY_HELPER = "activityHelper"; @@ -298,6 +301,10 @@ public final class ComponentUtil { return SingletonLaContainer.getComponent(DOCUMENT_HELPER); } + public static QueryParser getQueryParser() { + return SingletonLaContainer.getComponent(QUERY_PARSER); + } + public static T getComponent(final Class clazz) { return SingletonLaContainer.getComponent(clazz); } diff --git a/src/main/resources/app.xml b/src/main/resources/app.xml index d151cb5eb..46666c1ac 100644 --- a/src/main/resources/app.xml +++ b/src/main/resources/app.xml @@ -22,7 +22,7 @@ - + org.codelibs.fess.Constants.DEFAULT_FIELD diff --git a/src/test/java/org/codelibs/fess/helper/QueryHelperTest.java b/src/test/java/org/codelibs/fess/helper/QueryHelperTest.java index a898fcb57..38a95459c 100644 --- a/src/test/java/org/codelibs/fess/helper/QueryHelperTest.java +++ b/src/test/java/org/codelibs/fess/helper/QueryHelperTest.java @@ -17,6 +17,7 @@ package org.codelibs.fess.helper; import org.apache.lucene.analysis.core.WhitespaceAnalyzer; import org.apache.lucene.queryparser.classic.ParseException; +import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.queryparser.ext.ExtendableQueryParser; import org.codelibs.fess.Constants; import org.codelibs.fess.mylasta.direction.FessConfig; @@ -30,12 +31,15 @@ public class QueryHelperTest extends UnitFessTestCase { @Override public void setUp() throws Exception { super.setUp(); - queryHelper = new QueryHelper(); + queryHelper = new QueryHelper() { + protected QueryParser getQueryParser() { + return new ExtendableQueryParser(Constants.DEFAULT_FIELD, new WhitespaceAnalyzer()); + } + }; final FessConfig fessConfig = ComponentUtil.getFessConfig(); registerMockInstance(fessConfig); registerMockInstance(new SystemHelper()); inject(queryHelper); - queryHelper.queryParser = new ExtendableQueryParser(Constants.DEFAULT_FIELD, new WhitespaceAnalyzer()); queryHelper.init(); }