如何在Lucene 3.0.2中使用SnowballAnalyzer时禁用LowerCaseFilter?

时间:2014-11-10 13:36:18

标签: java lucene case-sensitive

我意识到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版本不是一个选择。

1 个答案:

答案 0 :(得分:0)

Snowball分析器是使用SnowballFilter的便利类。 LowerCaseFilter已被纳入代码中。

只需复制SnowballAnalyzer来源并删除第103行streams.result = new LowerCaseFilter(streams.result);

即可