在Lucene.Net中标记主题标签

时间:2011-04-14 08:33:17

标签: lucene lucene.net analyzer

我正在使用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:] [excercise,] [to] [live] [更长。]

使用过滤器的任何建议,其中'#','@'标签保留并删除了标点符号?

提前致谢。

1 个答案:

答案 0 :(得分:0)

在lucene的java版本中有一个PatternAnalyzer,它允许您指定将用于拆分标记的模式。

文档:http://lucene.apache.org/java/2_9_4/api/contrib-memory/org/apache/lucene/index/memory/PatternAnalyzer.html

你可以留意这个分析仪的.net版本或者你自己的端口。