2

我正在使用 Lucene.Net(2.9 版)。我想保留推文帖子“@name”或“#Note”。

使用 Lucene AnalyzerViewer 工具 (http://www.codeproject.com/KB/cs/lucene_analysis.aspx?msg=3326095#xx3326095xx) 查看不同分析器生成的令牌。

例如,以下文本产生的标记:“#Note: Excercise, to live longer.”

  • 空白分析器:[#Note:] [Excercise,] [to] [live] [longer.]
  • 标准分析器:[note] [excercise] [live] [longer]
  • 简单分析器:[note] [excercise] [to] [live] [longer]

“空白分析器”保留哈希标签。我创建了一个自定义分析器,它使用 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] [longer.]

有什么建议可以使用保留“#”、“@”标签并删除标点符号的过滤器?

提前致谢。

4

1 回答 1

0

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

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

您可以留意此分析器的 .net 版本或将其移植到您自己的版本中。

于 2011-04-14T10:16:09.427 回答