Lucene.Net 使用 PanGu Analyzer

摘要:Lucene.Net 使用盤古分詞

盤古分詞為一個支援中文分詞的程式 , f\其作者更將他整合成為 Lucene.Net 其中的一個 Analyzer , 

 

可是它並非是 Lucene.Net 的 Contrib Library , 不過它也隨著 Lucene.Net 3.03 推出而更新

 

因此若要使用 PanGu Analyzer  ,  可至 Github 專案下載 Code 來使用

 

Demo :

 

Step 1 : Build Index 

 

public void BuildIndex()
    {
        string[] texts = new string[] { 
                "據《華爾街日報》報導,諾基亞控告宏達電(2498)侵權案,遭美國國際貿易委員會(ITC)初判敗訴,因涉及硬體元件,影響擴及HTC One等新機種,可能波及明年宏達電出貨。宏達電表示,將儘快尋找替代方案,確保事業不受影響。",
                "宏達電今年2月發表的新HTC one獲獎消息不斷,近日再獲英國科技雜誌《T3》的年度手機、年度設計大獎,擠下蘋果的iPhone 5與三星的S4。不過,日前宏達電與諾基亞的官司敗訴,可能衝擊美國市場出貨。",
                "上周ITC判決宏達電侵犯諾基亞2項通訊專利,當時宏達電曾對外表示,遭控侵權的都是舊機種,負面影響不大。但外電報導,諾基亞在相關文件指出,專利所保護的晶片由高通所製,相關人士透露,宏達電的新HTC One及其他新機種,也採相同技術。",
                "業界人士指出,由於侵權爭議來自硬體技術、而不是軟體,宏達電必須與高通聯手修改設計,要立即研發出替代品的難度不低。如果ITC到明年元月仍維持原決議,恐影響宏達電新機在美國的出貨。",
                "另外,彭博社報導,微軟收購諾基亞之後,反手拉攏宏達電,雙方正在洽談以零授權費的方式,讓宏達電開發雙系統的智慧手機,也就是在Android手機上,再添加Windows作業系統。對此,宏達電不願評論。"
            };


        DirectoryInfo dirInfo = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory.ToString() + "\\App_Data");
        FSDirectory dir = FSDirectory.Open(dirInfo);

        IndexWriter iw = new IndexWriter(dir, new Lucene.Net.Analysis.PanGuAnalyzer(), true, IndexWriter.MaxFieldLength.UNLIMITED);
        Document doc = new Document();
        doc.Add(new Field("body", "",Field.Store.YES, Field.Index.ANALYZED));
        foreach (string text in texts)
        {
            doc.GetField("body").SetValue(text);
            iw.AddDocument(doc);
        }

        

        iw.Commit();
        iw.Optimize();
        iw.Dispose();
    }

 

Step 2 : Search 

 

 public void Search(string keyword)
    {
        DirectoryInfo dirInfo = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory.ToString() + "\\App_Data");
        FSDirectory dir = FSDirectory.Open(dirInfo);
        IndexSearcher searcher = new IndexSearcher(dir, true);
        QueryParser qp = new QueryParser(Lucene.Net.Util.Version.LUCENE_30, "body", new  Lucene.Net.Analysis.PanGuAnalyzer());
        Query query = qp.Parse(keyword); 
        TopDocs tds = searcher.Search(query, 10);
        var hits = searcher.Search(query, null, searcher.MaxDoc).ScoreDocs;

        foreach (var res in hits)
        {
            Response.Write(string.Format("{0}:{1}", res.Doc,searcher.Doc(res.Doc).Get("body").ToString() + "
"));
            
        }

       
    }

 

Result :  當我們 Search 宏達電時 , 包含宏達電的句子也都出現了

 

0:據《華爾街日報》報導,諾基亞控告宏達電(2498)侵權案,遭美國國際貿易委員會(ITC)初判敗訴,因涉及硬體元件,影響擴及HTC One等新機種,可能波及明年宏達電出貨。宏達電表示,將儘快尋找替代方案,確保事業不受影響。
1:宏達電今年2月發表的新HTC one獲獎消息不斷,近日再獲英國科技雜誌《T3》的年度手機、年度設計大獎,擠下蘋果的iPhone 5與三星的S4。不過,日前宏達電與諾基亞的官司敗訴,可能衝擊美國市場出貨。
2:上周ITC判決宏達電侵犯諾基亞2項通訊專利,當時宏達電曾對外表示,遭控侵權的都是舊機種,負面影響不大。但外電報導,諾基亞在相關文件指出,專利所保護的晶片由高通所製,相關人士透露,宏達電的新HTC One及其他新機種,也採相同技術。