Lucene.Net 4.8 添加多个过滤器到自定义分析器

Lucene.Net 4.8 add multiple filters to custom analyzer

我正在尝试创建一个应用了多个过滤器的自定义分析器。

问题是只应用了最后一个过滤器 (LowerCaseFilter)。

public class CustomAnalyzer : Analyzer
        {
            protected override TokenStreamComponents CreateComponents(string fieldName, TextReader reader)
            {

                Tokenizer tokenizer = new KeywordTokenizer(reader);

                //Remove basic stop words a, an, the, in, on etc

                TokenStream result = new StopFilter(GlobalVariables.LuceneVersion, tokenizer, StopAnalyzer.ENGLISH_STOP_WORDS_SET);

                ////Remove tile/tiles
                CharArraySet stopWords = new CharArraySet(GlobalVariables.LuceneVersion, 1, true)
                {
                    "test",
                    }

                result = new  StopFilter(GlobalVariables.LuceneVersion, tokenizer, stopWords);

                //Make case insenstive
                result = new LowerCaseFilter(GlobalVariables.LuceneVersion, tokenizer);

                return new TokenStreamComponents(tokenizer, result);
            }
        }

不要将分词器传递到每个过滤器中,而是将前一个过滤器传递进去。

Tokenizer tokenizer = new KeywordTokenizer(reader);
TokenStream result = new StopFilter(GlobalVariables.LuceneVersion, tokenizer, StopAnalyzer.ENGLISH_STOP_WORDS_SET);
CharArraySet stopWords = new CharArraySet(GlobalVariables.LuceneVersion, 1, true)
result = new  StopFilter(GlobalVariables.LuceneVersion, result, stopWords);
result = new LowerCaseFilter(GlobalVariables.LuceneVersion, result);
return new TokenStreamComponents(tokenizer, result);