📄 synonymfilter.java
字号:
package lia.analysis.synonym;import org.apache.lucene.analysis.TokenStream;import org.apache.lucene.analysis.TokenFilter;import org.apache.lucene.analysis.Token;import java.io.IOException;import java.util.Stack;public class SynonymFilter extends TokenFilter { public static final String TOKEN_TYPE_SYNONYM = "SYNONYM"; private Stack synonymStack; private SynonymEngine engine; public SynonymFilter(TokenStream in, SynonymEngine engine) { super(in); synonymStack = new Stack(); this.engine = engine; } public Token next() throws IOException { if (synonymStack.size() > 0) { return (Token) synonymStack.pop(); } Token token = input.next(); if (token == null) { return null; } addAliasesToStack(token); return token; } private void addAliasesToStack(Token token) throws IOException { String[] synonyms = engine.getSynonyms(token.termText()); if (synonyms == null) return; for (int i = 0; i < synonyms.length; i++) { Token synToken = new Token(synonyms[i], token.startOffset(), token.endOffset(), TOKEN_TYPE_SYNONYM); synToken.setPositionIncrement(0); synonymStack.push(synToken); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -