我编写了一个使用 ASCIIFoldingFilter 的自定义分析器,以便将位置名称中的扩展拉丁语集减少为常规拉丁语。
public class LocationNameAnalyzer extends Analyzer {
@Override
public TokenStream tokenStream(String arg0, Reader reader) {
//TokenStream result = new WhitespaceTokenizer(Version.LUCENE_36, reader);
StandardTokenizer tokenStream = new StandardTokenizer(Version.LUCENE_36, reader);
TokenStream result = new StandardFilter(tokenStream);
result = new LowerCaseFilter(result);
result = new ASCIIFoldingFilter(result);
return result;
}
}
我知道它充满了不推荐使用的东西,就像现在一样,但我稍后会更正。我现在的问题是,当我应用此分析器时,我能够使用标准拉丁语找到结果,但在搜索原始名称时却不行。
例如:“Munchen”为我带来了与慕尼黑相关的结果,但“München”不再提供。
我假设在我的情况下, ASCIIFoldingFilter 只是覆盖了我的流中的字符,所以问题是如何将两个流加在一起(普通流和折叠拉丁流)