【发布时间】:2016-10-18 12:55:37
【问题描述】:
我有一个这样的 lucene 条目:
“增加心率”
当我遇到“增加的心率”文本时,我想在索引中匹配此条目。这意味着我需要将输入标记为:
{increased, heart, rate}
{increasedheart, rate}
{increased, heartrate}
如何用 lucene 6+ 做到这一点?
亲切的问候
【问题讨论】:
标签: java indexing lucene tokenize
我有一个这样的 lucene 条目:
“增加心率”
当我遇到“增加的心率”文本时,我想在索引中匹配此条目。这意味着我需要将输入标记为:
{increased, heart, rate}
{increasedheart, rate}
{increased, heartrate}
如何用 lucene 6+ 做到这一点?
亲切的问候
【问题讨论】:
标签: java indexing lucene tokenize
这是我的做法,欢迎提出建议:
public class MyAnalyzer extends Analyzer {
public MyAnalyzer() {
super();
}
@Override
protected TokenStreamComponents createComponents(String fieldName) {
final Tokenizer src = new WhitespaceTokenizer();
TokenStream tok = new LowerCaseFilter(src);
tok = new HyphenatedWordsFilter(tok);
tok = getStopFilter(tok);
ShingleFilter filter = new ShingleFilter(tok, 2);
filter.setTokenSeparator("");
tok = filter;
return new TokenStreamComponents(src, tok) {
@Override
protected void setReader(final Reader reader) {
super.setReader(reader);
}
};
}
}
注意ShingleFilter,以及使用token separator设置方法。
【讨论】: