blob: 406adc2eeb19be7b2637abd63c43cbf7306f9aa4 [file] [log] [blame]
package org.apache.lucene.queryParser;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.text.CollationKey;
import java.text.Collator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Locale;
import junit.framework.Assert;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.KeywordAnalyzer;
import org.apache.lucene.document.DateTools;
import org.apache.lucene.queryParser.standard.config.AllowLeadingWildcardAttribute;
import org.apache.lucene.queryParser.standard.config.AnalyzerAttribute;
import org.apache.lucene.queryParser.standard.config.BoostAttribute;
import org.apache.lucene.queryParser.standard.config.DateResolutionAttribute;
import org.apache.lucene.queryParser.standard.config.DefaultOperatorAttribute;
import org.apache.lucene.queryParser.standard.config.DefaultPhraseSlopAttribute;
import org.apache.lucene.queryParser.standard.config.FieldBoostMapAttribute;
import org.apache.lucene.queryParser.standard.config.FieldDateResolutionMapAttribute;
import org.apache.lucene.queryParser.standard.config.FuzzyAttribute;
import org.apache.lucene.queryParser.standard.config.LocaleAttribute;
import org.apache.lucene.queryParser.standard.config.LowercaseExpandedTermsAttribute;
import org.apache.lucene.queryParser.standard.config.MultiFieldAttribute;
import org.apache.lucene.queryParser.standard.config.MultiTermRewriteMethodAttribute;
import org.apache.lucene.queryParser.standard.config.PositionIncrementsAttribute;
import org.apache.lucene.queryParser.standard.config.RangeCollatorAttribute;
import org.apache.lucene.queryParser.standard.config.StandardQueryConfigHandler;
import org.apache.lucene.queryParser.standard.config.StandardQueryConfigHandler.ConfigurationKeys;
import org.apache.lucene.queryParser.standard.config.StandardQueryConfigHandler.Operator;
import org.apache.lucene.search.FuzzyQuery;
import org.apache.lucene.search.MultiTermQuery;
import org.apache.lucene.util.LuceneTestCase;
import org.junit.Test;
public class TestAttributes extends LuceneTestCase {
@Test
public void testAttributes() {
StandardQueryConfigHandler config = new StandardQueryConfigHandler();
AnalyzerAttribute analyzerAttr = config
.addAttribute(AnalyzerAttribute.class);
Assert.assertTrue(null == analyzerAttr.getAnalyzer());
Assert.assertTrue(null == config.get(ConfigurationKeys.ANALYZER));
Analyzer analyzer = new KeywordAnalyzer();
analyzerAttr.setAnalyzer(analyzer);
Assert.assertTrue(analyzer == analyzerAttr.getAnalyzer());
Assert.assertTrue(analyzer == config.get(ConfigurationKeys.ANALYZER));
DateResolutionAttribute dateResAttr = config
.addAttribute(DateResolutionAttribute.class);
Assert.assertTrue(null == dateResAttr.getDateResolution());
Assert.assertTrue(null == config.get(ConfigurationKeys.DATE_RESOLUTION));
DateTools.Resolution dateRes = DateTools.Resolution.HOUR;
dateResAttr.setDateResolution(dateRes);
Assert.assertTrue(dateRes == dateResAttr.getDateResolution());
Assert.assertTrue(dateRes == config.get(ConfigurationKeys.DATE_RESOLUTION));
DefaultPhraseSlopAttribute defaultPhraseSlopAttr = config
.addAttribute(DefaultPhraseSlopAttribute.class);
Assert.assertEquals(0, defaultPhraseSlopAttr.getDefaultPhraseSlop());
Assert
.assertEquals(0, config.get(ConfigurationKeys.PHRASE_SLOP).intValue());
int phraseSlop = 1;
defaultPhraseSlopAttr.setDefaultPhraseSlop(phraseSlop);
Assert.assertEquals(phraseSlop, defaultPhraseSlopAttr
.getDefaultPhraseSlop());
Assert.assertEquals(phraseSlop, config.get(ConfigurationKeys.PHRASE_SLOP)
.intValue());
FieldBoostMapAttribute fieldBoostMapAttr = config
.addAttribute(FieldBoostMapAttribute.class);
Assert.assertEquals(new LinkedHashMap<String, Float>(), fieldBoostMapAttr
.getFieldBoostMap());
Assert.assertEquals(new LinkedHashMap<String, Float>(), config
.get(ConfigurationKeys.FIELD_BOOST_MAP));
LinkedHashMap<String, Float> fieldBoostMap = new LinkedHashMap<String, Float>();
fieldBoostMap.put("test", 0.3f);
fieldBoostMapAttr.setFieldBoostMap(fieldBoostMap);
Assert.assertEquals(fieldBoostMap, fieldBoostMapAttr.getFieldBoostMap());
Assert.assertEquals(fieldBoostMap, config
.get(ConfigurationKeys.FIELD_BOOST_MAP));
FieldDateResolutionMapAttribute fieldDateResolutionMapAttr = config
.addAttribute(FieldDateResolutionMapAttribute.class);
Assert.assertEquals(new HashMap<CharSequence, DateTools.Resolution>(),
fieldDateResolutionMapAttr.getFieldDateResolutionMap());
Assert.assertEquals(new HashMap<CharSequence, DateTools.Resolution>(),
config.get(ConfigurationKeys.FIELD_DATE_RESOLUTION_MAP));
HashMap<CharSequence, DateTools.Resolution> fieldDateResMap = new HashMap<CharSequence, DateTools.Resolution>();
fieldDateResMap.put("test", DateTools.Resolution.HOUR);
fieldDateResolutionMapAttr.setFieldDateResolutionMap(fieldDateResMap);
Assert.assertEquals(fieldDateResMap, fieldDateResolutionMapAttr.getFieldDateResolutionMap());
Assert.assertEquals(fieldDateResMap, config
.get(ConfigurationKeys.FIELD_DATE_RESOLUTION_MAP));
LocaleAttribute localeAttr = config.addAttribute(LocaleAttribute.class);
Assert.assertEquals(Locale.getDefault(), localeAttr.getLocale());
Assert.assertEquals(Locale.getDefault(), config
.get(ConfigurationKeys.LOCALE));
Locale locale = Locale.CHINA;
localeAttr.setLocale(locale);
Assert.assertEquals(locale, localeAttr.getLocale());
Assert.assertEquals(locale, config.get(ConfigurationKeys.LOCALE));
LowercaseExpandedTermsAttribute lowercaseExpandedTermsAttr = config
.addAttribute(LowercaseExpandedTermsAttribute.class);
Assert.assertEquals(true, lowercaseExpandedTermsAttr
.isLowercaseExpandedTerms());
Assert.assertEquals(true, config.get(
ConfigurationKeys.LOWERCASE_EXPANDED_TERMS).booleanValue());
boolean lowercaseEnabled = false;
lowercaseExpandedTermsAttr.setLowercaseExpandedTerms(lowercaseEnabled);
Assert.assertEquals(lowercaseEnabled, lowercaseExpandedTermsAttr
.isLowercaseExpandedTerms());
Assert.assertEquals(lowercaseEnabled, config.get(
ConfigurationKeys.LOWERCASE_EXPANDED_TERMS).booleanValue());
MultiTermRewriteMethodAttribute multiTermRewriteMethodAttr = config
.addAttribute(MultiTermRewriteMethodAttribute.class);
Assert
.assertTrue(MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT == multiTermRewriteMethodAttr
.getMultiTermRewriteMethod());
Assert
.assertTrue(MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT == config
.get(ConfigurationKeys.MULTI_TERM_REWRITE_METHOD));
MultiTermQuery.RewriteMethod rewriteMethod = MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE;
multiTermRewriteMethodAttr.setMultiTermRewriteMethod(rewriteMethod);
Assert.assertTrue(rewriteMethod == multiTermRewriteMethodAttr
.getMultiTermRewriteMethod());
Assert.assertTrue(rewriteMethod == config
.get(ConfigurationKeys.MULTI_TERM_REWRITE_METHOD));
PositionIncrementsAttribute positionIncrementsAttr = config
.addAttribute(PositionIncrementsAttribute.class);
Assert.assertEquals(false, positionIncrementsAttr
.isPositionIncrementsEnabled());
Assert.assertEquals(false, config.get(
ConfigurationKeys.ENABLE_POSITION_INCREMENTS).booleanValue());
boolean posIncrEnabled = true;
positionIncrementsAttr.setPositionIncrementsEnabled(posIncrEnabled);
Assert.assertEquals(posIncrEnabled, positionIncrementsAttr
.isPositionIncrementsEnabled());
Assert.assertEquals(posIncrEnabled, config.get(
ConfigurationKeys.ENABLE_POSITION_INCREMENTS).booleanValue());
RangeCollatorAttribute rangeCollatorAttr = config
.addAttribute(RangeCollatorAttribute.class);
Assert.assertTrue(null == rangeCollatorAttr.getRangeCollator());
Assert.assertTrue(null == config.get(ConfigurationKeys.RANGE_COLLATOR));
Collator collator = new Collator() {
@Override
public int compare(String arg0, String arg1) {
return 0;
}
@Override
public CollationKey getCollationKey(String arg0) {
return null;
}
@Override
public int hashCode() {
return 0;
}
};
rangeCollatorAttr.setDateResolution(collator);
Assert.assertTrue(collator == rangeCollatorAttr.getRangeCollator());
Assert.assertTrue(collator == config.get(ConfigurationKeys.RANGE_COLLATOR));
BoostAttribute boostAttr = config.addAttribute(BoostAttribute.class);
Assert.assertEquals(1.0f, boostAttr.getBoost());
Assert.assertEquals(1.0f, config.get(ConfigurationKeys.BOOST).floatValue());
float boost = 2.0f;
boostAttr.setBoost(boost);
Assert.assertEquals(boost, boostAttr.getBoost());
Assert
.assertEquals(boost, config.get(ConfigurationKeys.BOOST).floatValue());
FuzzyAttribute fuzzyAttributeAttr = config
.addAttribute(FuzzyAttribute.class);
Assert.assertEquals(FuzzyQuery.defaultMinSimilarity, fuzzyAttributeAttr
.getFuzzyMinSimilarity());
Assert.assertEquals(FuzzyQuery.defaultPrefixLength, fuzzyAttributeAttr
.getPrefixLength());
Assert.assertEquals(FuzzyQuery.defaultMinSimilarity, config.get(
ConfigurationKeys.FUZZY_CONFIG).getMinSimilarity());
Assert.assertEquals(FuzzyQuery.defaultPrefixLength, config.get(
ConfigurationKeys.FUZZY_CONFIG).getPrefixLength());
int prefixLength = 232;
float minSim = 23.923f;
fuzzyAttributeAttr.setFuzzyMinSimilarity(minSim);
fuzzyAttributeAttr.setPrefixLength(prefixLength);
Assert.assertEquals(minSim, fuzzyAttributeAttr.getFuzzyMinSimilarity());
Assert.assertEquals(prefixLength, fuzzyAttributeAttr.getPrefixLength());
Assert.assertEquals(minSim, config.get(ConfigurationKeys.FUZZY_CONFIG)
.getMinSimilarity());
Assert.assertEquals(prefixLength, config
.get(ConfigurationKeys.FUZZY_CONFIG).getPrefixLength());
DefaultOperatorAttribute defaultOpAttr = config
.addAttribute(DefaultOperatorAttribute.class);
Assert.assertEquals(DefaultOperatorAttribute.Operator.OR, defaultOpAttr
.getOperator());
Assert.assertEquals(Operator.OR, config
.get(ConfigurationKeys.DEFAULT_OPERATOR));
DefaultOperatorAttribute.Operator oldOperator = DefaultOperatorAttribute.Operator.AND;
Operator newOperator = Operator.AND;
defaultOpAttr.setOperator(oldOperator);
Assert.assertEquals(oldOperator, defaultOpAttr.getOperator());
Assert.assertEquals(newOperator, config
.get(ConfigurationKeys.DEFAULT_OPERATOR));
}
}