基于堆栈溢出中的一些帮助,我设法创建了一个自定义分析器,但仍然无法解决单词有重音的搜索。
public class CustomAnalyzer : Analyzer
{
LuceneVersion matchVersion;
public CustomAnalyzer(LuceneVersion p_matchVersion) : base()
{
matchVersion = p_matchVersion;
}
protected override TokenStreamComponents CreateComponents(string fieldName, TextReader reader)
{
Tokenizer tokenizer = new KeywordTokenizer(reader);
TokenStream result = new StopFilter(matchVersion, tokenizer, StopAnalyzer.ENGLISH_STOP_WORDS_SET);
result = new LowerCaseFilter(matchVersion, result);
result = new StandardFilter(matchVersion, result);
result = new ASCIIFoldingFilter(result);
return new TokenStreamComponents(tokenizer, result);
}
}
这个想法是能够搜索“perez”并找到“Pérez”。使用该分析器,我重新创建了索引并进行了搜索,但仍然没有带有重音的单词的结果。
作为 LuceneVersion 我正在使用LuceneVersion.LUCENE_48
任何帮助将不胜感激。谢谢!