2011-04-14 42 views
2

我正在使用Lucene.Net(版本2.9)。我想保留推文'@name'或'#Note'。在Lucene.Net中令牌化標籤#

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

例如,從本文產生的令牌:「#注意:運動,活得更長。」

  • 空白分析:#Note:] [鍛鍊; Tibial,] [於] [直播] [更長。]
  • 標準分析儀:[注] [鍛鍊; Tibial] [生活] [長]
  • 簡單分析器:[note] [練習] [to] [live] [更長]

'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] [longer。]

任何建議使用過濾器,其中'#','@'標記保留並刪除標點符號?

在此先感謝。

回答

0

在lucene的java版本中有一個PatternAnalyzer,它可以讓你指定一個將被用來分割記號的模式。

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

你可以注意這個分析儀或端口它自己的.NET版本。

+0

感謝您的建議。將密切關注PatternAnalyzer的.Net端口。與此同時,我們正在考慮提取tweet帖子(即'@name','#Note'等)並存儲在單獨的Lucene字段並使用Whitespace Analyzer的解決方法。 – user707501 2011-04-17 23:51:24

+0

不客氣!如果它還不存在,我建議你將自己的端口寫入.net。它只會是幾行代碼;) – csupnig 2011-04-18 14:32:21