fix #430 : change queryParser to prototype scope
This commit is contained in:
parent
90e20a0d2c
commit
200d0453a8
4 changed files with 20 additions and 7 deletions
|
@ -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<String> apiResponseFieldSet;
|
||||
|
||||
protected Set<String> highlightFieldSet = new HashSet<>();
|
||||
|
@ -243,7 +241,7 @@ public class QueryHelper implements Serializable {
|
|||
|
||||
public void buildBaseQuery(final QueryContext queryContext, final Consumer<QueryContext> 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);
|
||||
|
|
|
@ -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> T getComponent(final Class<T> clazz) {
|
||||
return SingletonLaContainer.getComponent(clazz);
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
</component>
|
||||
<component name="keyMatchHelper" class="org.codelibs.fess.helper.KeyMatchHelper">
|
||||
</component>
|
||||
<component name="queryParser" class="org.apache.lucene.queryparser.ext.ExtendableQueryParser">
|
||||
<component name="queryParser" class="org.apache.lucene.queryparser.ext.ExtendableQueryParser" instance="prototype">
|
||||
<arg>org.codelibs.fess.Constants.DEFAULT_FIELD</arg>
|
||||
<arg>
|
||||
<component class="org.apache.lucene.analysis.core.WhitespaceAnalyzer"></component>
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue