问题描述
|
我正在使用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版本,也可以自己移植。