我正在使用 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.]
有什么建议可以使用保留“#”、“@”标签并删除标点符号的过滤器?
提前致谢。