如何在Lucene FrenchAnalyzer中将最小长度设置为3?

问题描述 投票:0回答:1

我不知道如何在Java中创建的Lucene法文分析器中将最小字符长度设置为3:

private final FrenchAnalyzer analyzer = new FrenchAnalyzer();

有人知道该怎么做吗?

谢谢,克里斯托夫

java lucene lexical-analysis
1个回答
0
投票

FrenchAnalyzer被声明为final,因此无法扩展。我将通过复制源并将LengthFilter添加到副本来解决此问题。

步骤如下(假设您使用的是最新版本的Lucene):

1)从GitHub LengthFilter获取源类的副本。

2)适当地重命名该类(例如here),并相应地更改该类的所有构造函数。

3)添加以下导入:

CustomFrenchAnalyzer

4]在import org.apache.lucene.analysis.miscellaneous.LengthFilter; createComponents方法中,添加新的长度过滤器。例如,假设您要根据您的问题删除少于3个字符的单词:

normalize

也对@Override protected TokenStream normalize(String fieldName, TokenStream in) { TokenStream result = new ElisionFilter(in, DEFAULT_ARTICLES); result = new LowerCaseFilter(result); // the following line is added: result = new LengthFilter(result, 3, 9999); return result; } 方法也做同样的事情。

这样,您的自定义类将自动利用法语分析器中内置的其他功能:

  • 法国省略号过滤器
  • 默认设置为法语createComponents(与Lucene JAR捆绑在一起。)
  • 依此类推。

并且可以使用分析器的任何非空构造函数来构造它,如果需要。

如果您使用的不是Lucene的兼容版本,则必须跟踪相关的Git分支,或从Lucene stop-words下载源JAR并从那里获取源。

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.