fixed #30873
@@ -0,0 +1,16 @@ | ||
1 | +package jp.sf.fess.suggest.converter; | |
2 | + | |
3 | +import static org.hamcrest.core.Is.is; | |
4 | +import static org.junit.Assert.assertThat; | |
5 | + | |
6 | +import org.junit.Test; | |
7 | + | |
8 | +public class NormalizeConverterTest { | |
9 | + | |
10 | + @Test | |
11 | + public void convert() { | |
12 | + final NormalizeConverter normalizeConveter = new NormalizeConverter(); | |
13 | + assertThat(normalizeConveter.convert("123ABC123ABCアイウエオアイウエオ"), | |
14 | + is("123ABC123ABCアイウエオアイウエオ")); | |
15 | + } | |
16 | +} |
@@ -25,16 +25,13 @@ | ||
25 | 25 | |
26 | 26 | @Test |
27 | 27 | public void convert() { |
28 | - final SymbolConveter symbolConveter = new SymbolConveter(); | |
28 | + final SymbolConverter symbolConveter = new SymbolConverter(); | |
29 | 29 | assertThat(symbolConveter.convert("123abcあいうえおアイウエオ"), |
30 | 30 | is("123abcあいうえおアイウエオ")); |
31 | - symbolConveter.addSymbol("あ"); | |
31 | + symbolConveter.addSymbol(new String[] { "あ", "ア" }); | |
32 | 32 | assertThat(symbolConveter.convert("123abcあいうえおアイウエオ"), |
33 | - is("123abc__ID0__いうえおアイウエオ")); | |
34 | - symbolConveter.addSymbol("ア"); | |
35 | - assertThat(symbolConveter.convert("123abcあいうえおアイウエオ"), | |
36 | 33 | is("123abc__ID0__いうえお__ID1__イウエオ")); |
37 | - symbolConveter.addSymbol("a"); | |
34 | + symbolConveter.addSymbol(new String[] { "a" }); | |
38 | 35 | assertThat(symbolConveter.convert("123abcあいうえおアイウエオ"), |
39 | 36 | is("123__ID2__bc__ID0__いうえお__ID1__イウエオ")); |
40 | 37 | } |
@@ -103,6 +103,7 @@ | ||
103 | 103 | stream = new JapaneseTokenizer(new StringReader(query), |
104 | 104 | userDictionary, true, JapaneseTokenizer.Mode.NORMAL); |
105 | 105 | |
106 | + stream.reset(); | |
106 | 107 | while (stream.incrementToken()) { |
107 | 108 | final CharTermAttribute att = stream |
108 | 109 | .getAttribute(CharTermAttribute.class); |
@@ -0,0 +1,14 @@ | ||
1 | +package jp.sf.fess.suggest.converter; | |
2 | + | |
3 | +import com.ibm.icu.text.Normalizer; | |
4 | + | |
5 | +public class NormalizeConverter implements SuggestConverter { | |
6 | + | |
7 | + @Override | |
8 | + public String convert(final String query) { | |
9 | + final String target = Normalizer.normalize(query.replaceAll(" +", " "), | |
10 | + Normalizer.NFKC); | |
11 | + | |
12 | + return target; | |
13 | + } | |
14 | +} |
@@ -61,6 +61,10 @@ | ||
61 | 61 | } |
62 | 62 | } |
63 | 63 | |
64 | + if (queryList.size() == 0) { | |
65 | + queryList.add(target); | |
66 | + } | |
67 | + | |
64 | 68 | final StringBuilder resultStrBuff = new StringBuilder(255); |
65 | 69 | |
66 | 70 | for (int i = 0; i < queryList.size(); i++) { |
@@ -87,8 +91,8 @@ | ||
87 | 91 | return SuggestConstants.EMPTY_STRING; |
88 | 92 | } |
89 | 93 | |
90 | - for (final SuggestConverter conveter : preQueryConverterList) { | |
91 | - target = conveter.convert(target); | |
94 | + for (final SuggestConverter converter : resultConverterList) { | |
95 | + target = converter.convert(target); | |
92 | 96 | } |
93 | 97 | return target; |
94 | 98 | } |
@@ -204,6 +204,11 @@ | ||
204 | 204 | <version>4.1.0</version> |
205 | 205 | </dependency> |
206 | 206 | <dependency> |
207 | + <groupId>commons-lang</groupId> | |
208 | + <artifactId>commons-lang</artifactId> | |
209 | + <version>2.6</version> | |
210 | + </dependency> | |
211 | + <dependency> | |
207 | 212 | <groupId>com.ibm.icu</groupId> |
208 | 213 | <artifactId>icu4j</artifactId> |
209 | 214 | <version>50.1</version> |