在Lucene.Net中标记标记标签

问题描述

| 我正在使用Lucene.Net(2.9版)。我想保留推文帖子\'@ name \'或\'#Note \'。 使用Lucene AnalyzerViewer工具(http://www.codeproject.com/KB/cs/lucene_analysis.aspx?msg=3326095#xx3326095xx)来查看由不同分析器生成的令牌。 例如,以下是根据此文本生成的令牌:\“#注意:锻炼,寿命更长。\” 空格分析器:[#注意:] [锻炼,] [到] [实时] [更长。] 标准分析仪:[注意] [锻炼] [实时] [更长] 简单分析器:[注意] [锻炼] [到] [实时] [更长] \'Whitespace Analyzer \'保留哈希标记。我创建了一个自定义分析器,它使用Whitespacetokenizer和小写字母。 自定义分析器代码...
public class CustomAnalyzer : Analyzer
{
    public override TokenStream TokenStream(string fieldName,System.IO.TextReader reader)
    {
        TokenStream result = new Lucene.Net.Analysis.Whitespacetokenizer(reader);

        // Makes sure everything is lower case
        result = new LowerCaseFilter(result);

        //Return the built token stream.)
        return result;
    }
}
但是,自定义分析器保留标点符号。定制分析器生成的令牌:[#note:] [专门知识] [到] [有效] [更长]。 有什么建议使用保留\'#\',\'@ \'标签删除标点符号的过滤器? 提前致谢。     

解决方法

在Java版本的lucene中,有一个PatternAnalyzer,可让您指定用于分割标记的模式。 文档:http://lucene.apache.org/java/2_9_4/api/contrib-memory/org/apache/lucene/index/memory/PatternAnalyzer.html 您可以当心此分析仪的.net版本,也可以自己移植。