1 package org.apache.lucene.queryParser;
4 * Licensed to the Apache Software Foundation (ASF) under one or more
5 * contributor license agreements. See the NOTICE file distributed with
6 * this work for additional information regarding copyright ownership.
7 * The ASF licenses this file to You under the Apache License, Version 2.0
8 * (the "License"); you may not use this file except in compliance with
9 * the License. You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
20 import java.text.CollationKey;
21 import java.text.Collator;
22 import java.util.HashMap;
23 import java.util.LinkedHashMap;
24 import java.util.Locale;
26 import junit.framework.Assert;
28 import org.apache.lucene.analysis.Analyzer;
29 import org.apache.lucene.analysis.KeywordAnalyzer;
30 import org.apache.lucene.document.DateTools;
31 import org.apache.lucene.queryParser.standard.config.AllowLeadingWildcardAttribute;
32 import org.apache.lucene.queryParser.standard.config.AnalyzerAttribute;
33 import org.apache.lucene.queryParser.standard.config.BoostAttribute;
34 import org.apache.lucene.queryParser.standard.config.DateResolutionAttribute;
35 import org.apache.lucene.queryParser.standard.config.DefaultOperatorAttribute;
36 import org.apache.lucene.queryParser.standard.config.DefaultPhraseSlopAttribute;
37 import org.apache.lucene.queryParser.standard.config.FieldBoostMapAttribute;
38 import org.apache.lucene.queryParser.standard.config.FieldDateResolutionMapAttribute;
39 import org.apache.lucene.queryParser.standard.config.FuzzyAttribute;
40 import org.apache.lucene.queryParser.standard.config.LocaleAttribute;
41 import org.apache.lucene.queryParser.standard.config.LowercaseExpandedTermsAttribute;
42 import org.apache.lucene.queryParser.standard.config.MultiFieldAttribute;
43 import org.apache.lucene.queryParser.standard.config.MultiTermRewriteMethodAttribute;
44 import org.apache.lucene.queryParser.standard.config.PositionIncrementsAttribute;
45 import org.apache.lucene.queryParser.standard.config.RangeCollatorAttribute;
46 import org.apache.lucene.queryParser.standard.config.StandardQueryConfigHandler;
47 import org.apache.lucene.queryParser.standard.config.StandardQueryConfigHandler.ConfigurationKeys;
48 import org.apache.lucene.queryParser.standard.config.StandardQueryConfigHandler.Operator;
49 import org.apache.lucene.search.FuzzyQuery;
50 import org.apache.lucene.search.MultiTermQuery;
51 import org.apache.lucene.util.LuceneTestCase;
52 import org.junit.Test;
54 public class TestAttributes extends LuceneTestCase {
57 public void testAttributes() {
58 StandardQueryConfigHandler config = new StandardQueryConfigHandler();
60 AnalyzerAttribute analyzerAttr = config
61 .addAttribute(AnalyzerAttribute.class);
63 Assert.assertTrue(null == analyzerAttr.getAnalyzer());
64 Assert.assertTrue(null == config.get(ConfigurationKeys.ANALYZER));
65 Analyzer analyzer = new KeywordAnalyzer();
66 analyzerAttr.setAnalyzer(analyzer);
67 Assert.assertTrue(analyzer == analyzerAttr.getAnalyzer());
68 Assert.assertTrue(analyzer == config.get(ConfigurationKeys.ANALYZER));
70 DateResolutionAttribute dateResAttr = config
71 .addAttribute(DateResolutionAttribute.class);
73 Assert.assertTrue(null == dateResAttr.getDateResolution());
74 Assert.assertTrue(null == config.get(ConfigurationKeys.DATE_RESOLUTION));
75 DateTools.Resolution dateRes = DateTools.Resolution.HOUR;
76 dateResAttr.setDateResolution(dateRes);
77 Assert.assertTrue(dateRes == dateResAttr.getDateResolution());
78 Assert.assertTrue(dateRes == config.get(ConfigurationKeys.DATE_RESOLUTION));
80 DefaultPhraseSlopAttribute defaultPhraseSlopAttr = config
81 .addAttribute(DefaultPhraseSlopAttribute.class);
83 Assert.assertEquals(0, defaultPhraseSlopAttr.getDefaultPhraseSlop());
85 .assertEquals(0, config.get(ConfigurationKeys.PHRASE_SLOP).intValue());
87 defaultPhraseSlopAttr.setDefaultPhraseSlop(phraseSlop);
88 Assert.assertEquals(phraseSlop, defaultPhraseSlopAttr
89 .getDefaultPhraseSlop());
90 Assert.assertEquals(phraseSlop, config.get(ConfigurationKeys.PHRASE_SLOP)
93 FieldBoostMapAttribute fieldBoostMapAttr = config
94 .addAttribute(FieldBoostMapAttribute.class);
96 Assert.assertEquals(new LinkedHashMap<String, Float>(), fieldBoostMapAttr
98 Assert.assertEquals(new LinkedHashMap<String, Float>(), config
99 .get(ConfigurationKeys.FIELD_BOOST_MAP));
100 LinkedHashMap<String, Float> fieldBoostMap = new LinkedHashMap<String, Float>();
101 fieldBoostMap.put("test", 0.3f);
102 fieldBoostMapAttr.setFieldBoostMap(fieldBoostMap);
103 Assert.assertEquals(fieldBoostMap, fieldBoostMapAttr.getFieldBoostMap());
104 Assert.assertEquals(fieldBoostMap, config
105 .get(ConfigurationKeys.FIELD_BOOST_MAP));
107 FieldDateResolutionMapAttribute fieldDateResolutionMapAttr = config
108 .addAttribute(FieldDateResolutionMapAttribute.class);
110 Assert.assertEquals(new HashMap<CharSequence, DateTools.Resolution>(),
111 fieldDateResolutionMapAttr.getFieldDateResolutionMap());
112 Assert.assertEquals(new HashMap<CharSequence, DateTools.Resolution>(),
113 config.get(ConfigurationKeys.FIELD_DATE_RESOLUTION_MAP));
114 HashMap<CharSequence, DateTools.Resolution> fieldDateResMap = new HashMap<CharSequence, DateTools.Resolution>();
115 fieldDateResMap.put("test", DateTools.Resolution.HOUR);
116 fieldDateResolutionMapAttr.setFieldDateResolutionMap(fieldDateResMap);
117 Assert.assertEquals(fieldDateResMap, fieldDateResolutionMapAttr.getFieldDateResolutionMap());
118 Assert.assertEquals(fieldDateResMap, config
119 .get(ConfigurationKeys.FIELD_DATE_RESOLUTION_MAP));
121 LocaleAttribute localeAttr = config.addAttribute(LocaleAttribute.class);
123 Assert.assertEquals(Locale.getDefault(), localeAttr.getLocale());
124 Assert.assertEquals(Locale.getDefault(), config
125 .get(ConfigurationKeys.LOCALE));
126 Locale locale = Locale.CHINA;
127 localeAttr.setLocale(locale);
128 Assert.assertEquals(locale, localeAttr.getLocale());
129 Assert.assertEquals(locale, config.get(ConfigurationKeys.LOCALE));
131 LowercaseExpandedTermsAttribute lowercaseExpandedTermsAttr = config
132 .addAttribute(LowercaseExpandedTermsAttribute.class);
134 Assert.assertEquals(true, lowercaseExpandedTermsAttr
135 .isLowercaseExpandedTerms());
136 Assert.assertEquals(true, config.get(
137 ConfigurationKeys.LOWERCASE_EXPANDED_TERMS).booleanValue());
138 boolean lowercaseEnabled = false;
139 lowercaseExpandedTermsAttr.setLowercaseExpandedTerms(lowercaseEnabled);
140 Assert.assertEquals(lowercaseEnabled, lowercaseExpandedTermsAttr
141 .isLowercaseExpandedTerms());
142 Assert.assertEquals(lowercaseEnabled, config.get(
143 ConfigurationKeys.LOWERCASE_EXPANDED_TERMS).booleanValue());
145 MultiTermRewriteMethodAttribute multiTermRewriteMethodAttr = config
146 .addAttribute(MultiTermRewriteMethodAttribute.class);
149 .assertTrue(MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT == multiTermRewriteMethodAttr
150 .getMultiTermRewriteMethod());
152 .assertTrue(MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT == config
153 .get(ConfigurationKeys.MULTI_TERM_REWRITE_METHOD));
154 MultiTermQuery.RewriteMethod rewriteMethod = MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE;
155 multiTermRewriteMethodAttr.setMultiTermRewriteMethod(rewriteMethod);
156 Assert.assertTrue(rewriteMethod == multiTermRewriteMethodAttr
157 .getMultiTermRewriteMethod());
158 Assert.assertTrue(rewriteMethod == config
159 .get(ConfigurationKeys.MULTI_TERM_REWRITE_METHOD));
161 PositionIncrementsAttribute positionIncrementsAttr = config
162 .addAttribute(PositionIncrementsAttribute.class);
164 Assert.assertEquals(false, positionIncrementsAttr
165 .isPositionIncrementsEnabled());
166 Assert.assertEquals(false, config.get(
167 ConfigurationKeys.ENABLE_POSITION_INCREMENTS).booleanValue());
168 boolean posIncrEnabled = true;
169 positionIncrementsAttr.setPositionIncrementsEnabled(posIncrEnabled);
170 Assert.assertEquals(posIncrEnabled, positionIncrementsAttr
171 .isPositionIncrementsEnabled());
172 Assert.assertEquals(posIncrEnabled, config.get(
173 ConfigurationKeys.ENABLE_POSITION_INCREMENTS).booleanValue());
175 RangeCollatorAttribute rangeCollatorAttr = config
176 .addAttribute(RangeCollatorAttribute.class);
178 Assert.assertTrue(null == rangeCollatorAttr.getRangeCollator());
179 Assert.assertTrue(null == config.get(ConfigurationKeys.RANGE_COLLATOR));
180 Collator collator = new Collator() {
183 public int compare(String arg0, String arg1) {
188 public CollationKey getCollationKey(String arg0) {
193 public int hashCode() {
198 rangeCollatorAttr.setDateResolution(collator);
199 Assert.assertTrue(collator == rangeCollatorAttr.getRangeCollator());
200 Assert.assertTrue(collator == config.get(ConfigurationKeys.RANGE_COLLATOR));
202 BoostAttribute boostAttr = config.addAttribute(BoostAttribute.class);
204 Assert.assertEquals(1.0f, boostAttr.getBoost());
205 Assert.assertEquals(1.0f, config.get(ConfigurationKeys.BOOST).floatValue());
207 boostAttr.setBoost(boost);
208 Assert.assertEquals(boost, boostAttr.getBoost());
210 .assertEquals(boost, config.get(ConfigurationKeys.BOOST).floatValue());
212 FuzzyAttribute fuzzyAttributeAttr = config
213 .addAttribute(FuzzyAttribute.class);
215 Assert.assertEquals(FuzzyQuery.defaultMinSimilarity, fuzzyAttributeAttr
216 .getFuzzyMinSimilarity());
217 Assert.assertEquals(FuzzyQuery.defaultPrefixLength, fuzzyAttributeAttr
219 Assert.assertEquals(FuzzyQuery.defaultMinSimilarity, config.get(
220 ConfigurationKeys.FUZZY_CONFIG).getMinSimilarity());
221 Assert.assertEquals(FuzzyQuery.defaultPrefixLength, config.get(
222 ConfigurationKeys.FUZZY_CONFIG).getPrefixLength());
223 int prefixLength = 232;
224 float minSim = 23.923f;
225 fuzzyAttributeAttr.setFuzzyMinSimilarity(minSim);
226 fuzzyAttributeAttr.setPrefixLength(prefixLength);
227 Assert.assertEquals(minSim, fuzzyAttributeAttr.getFuzzyMinSimilarity());
228 Assert.assertEquals(prefixLength, fuzzyAttributeAttr.getPrefixLength());
229 Assert.assertEquals(minSim, config.get(ConfigurationKeys.FUZZY_CONFIG)
230 .getMinSimilarity());
231 Assert.assertEquals(prefixLength, config
232 .get(ConfigurationKeys.FUZZY_CONFIG).getPrefixLength());
234 DefaultOperatorAttribute defaultOpAttr = config
235 .addAttribute(DefaultOperatorAttribute.class);
237 Assert.assertEquals(DefaultOperatorAttribute.Operator.OR, defaultOpAttr
239 Assert.assertEquals(Operator.OR, config
240 .get(ConfigurationKeys.DEFAULT_OPERATOR));
241 DefaultOperatorAttribute.Operator oldOperator = DefaultOperatorAttribute.Operator.AND;
242 Operator newOperator = Operator.AND;
243 defaultOpAttr.setOperator(oldOperator);
244 Assert.assertEquals(oldOperator, defaultOpAttr.getOperator());
245 Assert.assertEquals(newOperator, config
246 .get(ConfigurationKeys.DEFAULT_OPERATOR));