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));