package org.apache.lucene.queryparser.spans; import java.util.Locale; import java.util.TimeZone; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.document.DateTools; import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.queryparser.flexible.standard.CommonQueryParserConfiguration; import org.apache.lucene.search.FuzzyQuery; import org.apache.lucene.search.MultiTermQuery; class SQPTestingConfig implements CommonQueryParserConfiguration { private boolean lowercaseExpandedTerms; private boolean allowLeadingWildcard; private boolean enablePositionIncrements; private MultiTermQuery.RewriteMethod multiTermRewriteMethod = MultiTermQuery.CONSTANT_SCORE_REWRITE; private int fuzzyPrefixLength = FuzzyQuery.defaultPrefixLength; private Locale locale; private TimeZone timeZone; private int defaultPhraseSlop; private Analyzer analyzer; private final Analyzer mtAnalyzer; private float fuzzyMinSim = FuzzyQuery.defaultMaxEdits; private int phraseSlop; private final String defaultField; private QueryParser.Operator defaultOperator = QueryParser.Operator.OR; private boolean autoGeneratePhraseQueries = false; public SQPTestingConfig(String field, Analyzer analyzer, Analyzer mtAnalyzer) { this.defaultField = field; this.analyzer = analyzer; this.mtAnalyzer = mtAnalyzer; } public SpanQueryParser getConfiguredParser() { Analyzer tmpMTAnalyzer = mtAnalyzer; SpanQueryParser p = new SpanQueryParser(defaultField, analyzer, tmpMTAnalyzer); p.setDefaultOperator(getDefaultOperator()); p.setAllowLeadingWildcard(getAllowLeadingWildcard()); p.setMultiTermRewriteMethod(getMultiTermRewriteMethod()); p.setFuzzyPrefixLength(getFuzzyPrefixLength()); p.setFuzzyMaxEdits((int)getFuzzyMinSim()); p.setAutoGeneratePhraseQueries(autoGeneratePhraseQueries); return p; } @Override public void setAllowLeadingWildcard(boolean allowLeadingWildcard) { this.allowLeadingWildcard = allowLeadingWildcard; } @Override public void setEnablePositionIncrements(boolean enabled) { this.enablePositionIncrements = enabled; } @Override public boolean getEnablePositionIncrements() { return enablePositionIncrements; } @Override public void setMultiTermRewriteMethod(MultiTermQuery.RewriteMethod method) { this.multiTermRewriteMethod = method; } @Override public MultiTermQuery.RewriteMethod getMultiTermRewriteMethod() { return multiTermRewriteMethod; } @Override public void setFuzzyPrefixLength(int fuzzyPrefixLength) { this.fuzzyPrefixLength = fuzzyPrefixLength; } @Override public void setLocale(Locale locale) { this.locale = locale; } @Override public Locale getLocale() { return locale; } @Override public void setTimeZone(TimeZone timeZone) { this.timeZone = timeZone; } @Override public TimeZone getTimeZone() { return timeZone; } @Override public void setPhraseSlop(int defaultPhraseSlop) { this.defaultPhraseSlop = defaultPhraseSlop; } @Override public Analyzer getAnalyzer() { return analyzer; } public void setAnalyzer(Analyzer analyzer) { this.analyzer = analyzer; } @Override public boolean getAllowLeadingWildcard() { return allowLeadingWildcard; } @Override public float getFuzzyMinSim() { return fuzzyMinSim; } @Override public int getFuzzyPrefixLength() { return fuzzyPrefixLength; } @Override public int getPhraseSlop() { return phraseSlop; } @Override public void setFuzzyMinSim(float fuzzyMinSim) { this.fuzzyMinSim = fuzzyMinSim; } @Override public void setDateResolution(DateTools.Resolution dateResolution) { } public QueryParser.Operator getDefaultOperator() { return defaultOperator; } public void setDefaultOperator(QueryParser.Operator defaultOperator) { this.defaultOperator = defaultOperator; } public void setAnalyzeRangeTerms(boolean value) { if (value) { //TODO; fill out } } public void setAutoGeneratePhraseQueries(boolean autoGeneratePhraseQueries) { this.autoGeneratePhraseQueries = autoGeneratePhraseQueries; } }