fix synonym filter problem due to refactoring done in analysis components regestrations
This commit is contained in:
parent
cc39eb76d0
commit
b7d492af4b
|
@ -32,6 +32,7 @@ import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.env.Environment;
|
import org.elasticsearch.env.Environment;
|
||||||
import org.elasticsearch.index.Index;
|
import org.elasticsearch.index.Index;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
|
import org.elasticsearch.indices.analysis.IndicesAnalysisService;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -43,7 +44,7 @@ public class SynonymTokenFilterFactory extends AbstractTokenFilterFactory {
|
||||||
|
|
||||||
private final SynonymMap synonymMap;
|
private final SynonymMap synonymMap;
|
||||||
|
|
||||||
@Inject public SynonymTokenFilterFactory(Index index, @IndexSettings Settings indexSettings, Environment env, Map<String, TokenizerFactoryFactory> tokenizerFactories,
|
@Inject public SynonymTokenFilterFactory(Index index, @IndexSettings Settings indexSettings, Environment env, IndicesAnalysisService indicesAnalysisService, Map<String, TokenizerFactoryFactory> tokenizerFactories,
|
||||||
@Assisted String name, @Assisted Settings settings) {
|
@Assisted String name, @Assisted Settings settings) {
|
||||||
super(index, indexSettings, name, settings);
|
super(index, indexSettings, name, settings);
|
||||||
|
|
||||||
|
@ -54,8 +55,16 @@ public class SynonymTokenFilterFactory extends AbstractTokenFilterFactory {
|
||||||
boolean ignoreCase = settings.getAsBoolean("ignore_case", false);
|
boolean ignoreCase = settings.getAsBoolean("ignore_case", false);
|
||||||
boolean expand = settings.getAsBoolean("expand", true);
|
boolean expand = settings.getAsBoolean("expand", true);
|
||||||
|
|
||||||
TokenizerFactoryFactory tokenizerFactoryFactory = tokenizerFactories.get(settings.get("tokenizer", "whitespace"));
|
String tokenizerName = settings.get("tokenizer", "whitespace");
|
||||||
TokenizerFactory tokenizerFactory = tokenizerFactoryFactory.create(settings.get("tokenizer", "whitespace"), settings);
|
|
||||||
|
TokenizerFactoryFactory tokenizerFactoryFactory = tokenizerFactories.get(tokenizerName);
|
||||||
|
if (tokenizerFactoryFactory == null) {
|
||||||
|
tokenizerFactoryFactory = indicesAnalysisService.tokenizerFactoryFactory(tokenizerName);
|
||||||
|
}
|
||||||
|
if (tokenizerFactoryFactory == null) {
|
||||||
|
throw new ElasticSearchIllegalArgumentException("failed to fine tokenizer [" + tokenizerName + "] for synonym token filter");
|
||||||
|
}
|
||||||
|
TokenizerFactory tokenizerFactory = tokenizerFactoryFactory.create(tokenizerName, settings);
|
||||||
synonymMap = new SynonymMap(ignoreCase);
|
synonymMap = new SynonymMap(ignoreCase);
|
||||||
parseRules(rules, synonymMap, "=>", ",", expand, tokenizerFactory);
|
parseRules(rules, synonymMap, "=>", ",", expand, tokenizerFactory);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue