|
@@ -38,6 +38,7 @@ import java.io.StringReader;
|
|
|
import java.nio.file.Files;
|
|
|
import java.nio.file.Path;
|
|
|
|
|
|
+import static org.hamcrest.Matchers.containsString;
|
|
|
import static org.hamcrest.Matchers.instanceOf;
|
|
|
|
|
|
public class NoriAnalysisTests extends ESTokenStreamTestCase {
|
|
@@ -76,6 +77,22 @@ public class NoriAnalysisTests extends ESTokenStreamTestCase {
|
|
|
}
|
|
|
|
|
|
public void testNoriAnalyzerUserDict() throws Exception {
|
|
|
+ Settings settings = Settings.builder()
|
|
|
+ .put("index.analysis.analyzer.my_analyzer.type", "nori")
|
|
|
+ .putList("index.analysis.analyzer.my_analyzer.user_dictionary_rules", "c++", "C샤프", "세종", "세종시 세종 시")
|
|
|
+ .build();
|
|
|
+ TestAnalysis analysis = createTestAnalysis(settings);
|
|
|
+ Analyzer analyzer = analysis.indexAnalyzers.get("my_analyzer");
|
|
|
+ try (TokenStream stream = analyzer.tokenStream("", "세종시")) {
|
|
|
+ assertTokenStreamContents(stream, new String[]{"세종", "시"});
|
|
|
+ }
|
|
|
+
|
|
|
+ try (TokenStream stream = analyzer.tokenStream("", "c++world")) {
|
|
|
+ assertTokenStreamContents(stream, new String[]{"c++", "world"});
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void testNoriAnalyzerUserDictPath() throws Exception {
|
|
|
Settings settings = Settings.builder()
|
|
|
.put("index.analysis.analyzer.my_analyzer.type", "nori")
|
|
|
.put("index.analysis.analyzer.my_analyzer.user_dictionary", "user_dict.txt")
|
|
@@ -91,6 +108,17 @@ public class NoriAnalysisTests extends ESTokenStreamTestCase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void testNoriAnalyzerInvalidUserDictOption() throws Exception {
|
|
|
+ Settings settings = Settings.builder()
|
|
|
+ .put("index.analysis.analyzer.my_analyzer.type", "nori")
|
|
|
+ .put("index.analysis.analyzer.my_analyzer.user_dictionary", "user_dict.txt")
|
|
|
+ .putList("index.analysis.analyzer.my_analyzer.user_dictionary_rules", "c++", "C샤프", "세종", "세종시 세종 시")
|
|
|
+ .build();
|
|
|
+ IllegalArgumentException exc = expectThrows(IllegalArgumentException.class, () -> createTestAnalysis(settings));
|
|
|
+ assertThat(exc.getMessage(), containsString("It is not allowed to use [user_dictionary] in conjunction " +
|
|
|
+ "with [user_dictionary_rules]"));
|
|
|
+ }
|
|
|
+
|
|
|
public void testNoriTokenizer() throws Exception {
|
|
|
Settings settings = Settings.builder()
|
|
|
.put("index.analysis.tokenizer.my_tokenizer.type", "nori_tokenizer")
|