C# 使用ASCIIFoldingFilter的自定义分析器不替换变音符号

C# 使用ASCIIFoldingFilter的自定义分析器不替换变音符号,c#,java,lucene,lucene.net,diacritics,C#,Java,Lucene,Lucene.net,Diacritics,我们有一个自定义Lucene.NET分析器的问题,该分析器使用和小写过滤器 在为我们的内容编制索引时,小写过滤器起作用,使所有术语都小写,但ASCIIFoldingFilter使变音符号保持不变(没有错误,但是像őő这样的字符不会被o替换,它们是未被触及的,并且在索引中显示为这样-我本以为这会起作用或失败,但什么也不做) 相关代码如下所示: public TokenStream TokenStream(String fieldName, TextReader reader) { Tokeni

我们有一个自定义Lucene.NET分析器的问题,该分析器使用和小写过滤器

在为我们的内容编制索引时,小写过滤器起作用,使所有术语都小写,但ASCIIFoldingFilter使变音符号保持不变(没有错误,但是像őő这样的字符不会被o替换,它们是未被触及的,并且在索引中显示为这样-我本以为这会起作用或失败,但什么也不做)

相关代码如下所示:

public TokenStream TokenStream(String fieldName, TextReader reader) {
  Tokenizer tokenizer = new StandardTokenizer(reader);
  TokenStream stream = new StandardFilter(tokenizer);
  stream = new ASCIIFoldingFilter(stream);
  return new LowerCaseFilter(stream);
}
使用ASCIIFoldingFilter是否需要执行其他步骤

是否有一些我可以适应Lucene.NET的Java实例

谢谢大家!


编辑:我设法解决了这个问题。这是一个配置错误的问题。没有使用自定义分析器,使用了另一个只处理小写的分析器。自定义筛选器现在工作正常。抱歉!

您显示的重音o-s(“\u0151”和“\u014f”)的代码点请考虑ASCIFOLIDENG过滤器的显式处理。考虑字符串不规范化的可能性。@ Hans Passant:请您进一步解释一下您的注释的这一部分:考虑字符串不规范化的可能性。我明白在输入到ASCIIFOLIDENG过滤器之前,应该对输入做些什么吗?勾选MSDN库中的string.Normalize()方法。只是猜测。调试这肯定是最好的方法。@user9648321,将其添加为答案,以便将此问题标记为已解决。