我意识到3.0.2是Lucene的旧版本,但如果我有以下Java代码:
int nGramLength = 3;
Set<String> stopWords = new Set<String>();
stopwords.add("the");
stopwords.add("and");
...
SnowballAnalyzer snowballAnalyzer = new SnowballAnalyzer(Version.LUCENE_30, "English", stopWords);
ShingleAnalyzerWrapper shingleAnalyzer = new ShingleAnalyzerWrapper(snowballAnalyzer, nGramLength);
哪个会从一个没有停用词的特定文本字符串中生成ngram的频率,如何禁用构成SnowBallAnalyzer一部分的LowerCaseFilter?我想保留生成的ngrams的情况,以便我可以根据ngrams中是否存在大写字符来执行各种计数。
我是一个Lucene新手。我应该补充一点,升级Lucene版本不是一个选择。
答案 0 :(得分:0)
Snowball分析器是使用SnowballFilter
的便利类。 LowerCaseFilter
已被纳入代码中。
只需复制SnowballAnalyzer
来源并删除第103行streams.result = new LowerCaseFilter(streams.result);