diff --git a/.gitignore b/.gitignore index 760645ed9d21d9b322d915c1a88265b8ca8cc87d..106eb4a5c3858a2bb345b5c970f6aabdb413b306 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /out .DS_Store *.iml +\.* diff --git a/src/main/java/org/elasticsearch/index/analysis/IkAnalysisBinderProcessor.java b/src/main/java/org/elasticsearch/index/analysis/IkAnalysisBinderProcessor.java index 88661b30d36082edfbce0307dda395aa85dae2c3..a448c8a826c9c0d8cfb88c0fd08d9f65be8fa776 100644 --- a/src/main/java/org/elasticsearch/index/analysis/IkAnalysisBinderProcessor.java +++ b/src/main/java/org/elasticsearch/index/analysis/IkAnalysisBinderProcessor.java @@ -12,4 +12,11 @@ public class IkAnalysisBinderProcessor extends AnalysisModule.AnalysisBinderProc analyzersBindings.processAnalyzer("ik", IkAnalyzerProvider.class); super.processAnalyzers(analyzersBindings); } + + + @Override + public void processTokenizers(TokenizersBindings tokenizersBindings) { + tokenizersBindings.processTokenizer("ik", IkTokenizerFactory.class); + super.processTokenizers(tokenizersBindings); + } } diff --git a/src/main/java/org/elasticsearch/index/analysis/IkAnalyzer.java b/src/main/java/org/elasticsearch/index/analysis/IkAnalyzer.java deleted file mode 100644 index ffdf0d67f6002046341de2d29526753b4a954d7e..0000000000000000000000000000000000000000 --- a/src/main/java/org/elasticsearch/index/analysis/IkAnalyzer.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.elasticsearch.index.analysis; - -import org.apache.lucene.analysis.Analyzer; -import org.apache.lucene.analysis.TokenStream; -import org.apache.lucene.analysis.Tokenizer; -import org.wltea.analyzer.lucene.IKTokenizer; -//import org.wltea.lucene.IKTokenizer; - -import java.io.Reader; - - -public class IkAnalyzer extends Analyzer { -// private boolean isMaxWordLength = false; -// @Override public TokenStream tokenStream(String fieldName, Reader reader) { -// return new IKTokenizer(reader,true); -// } - - - public IkAnalyzer() { - super(); - } - - @Override - protected TokenStreamComponents createComponents(String s, Reader reader) { -// new TokenStreamComponents - Tokenizer tokenizer = new IKTokenizer(reader, true); - return new TokenStreamComponents(tokenizer, null); //To change body of implemented methods use File | Settings | File Templates. - } - -// public boolean isMaxWordLength() { -// return isMaxWordLength; -// } -} diff --git a/src/main/java/org/elasticsearch/index/analysis/IkTokenizerFactory.java b/src/main/java/org/elasticsearch/index/analysis/IkTokenizerFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..71eebe800531f56eb13afd7fa543cd7b3922aa16 --- /dev/null +++ b/src/main/java/org/elasticsearch/index/analysis/IkTokenizerFactory.java @@ -0,0 +1,30 @@ +package org.elasticsearch.index.analysis; + +import java.io.Reader; + +import org.apache.lucene.analysis.Tokenizer; +import org.elasticsearch.common.inject.Inject; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.index.Index; +import org.wltea.analyzer.dic.Dictionary; +import org.wltea.analyzer.lucene.IKTokenizer; + +public class IkTokenizerFactory extends AbstractTokenizerFactory { + private boolean useSmart = false; + + @Inject + public IkTokenizerFactory(Index index, Settings indexSettings, String name, Settings settings) { + super(index, indexSettings, name, settings); + Dictionary.getInstance().Init(indexSettings); + + if (settings.get("use_smart", "true").equals("true")) { + useSmart = true; + } + } + + @Override + public Tokenizer create(Reader reader) { + return new IKTokenizer(reader, useSmart); + } + +}