1

基于堆栈溢出中的一些帮助,我设法创建了一个自定义分析器,但仍然无法解决单词有重音的搜索。

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

任何帮助将不胜感激。谢谢!

4

0 回答 0