程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 使用Lucene.NET實現數據檢索功能

使用Lucene.NET實現數據檢索功能

編輯:C#入門知識

  • 引言
    在軟件系統中查詢數據是再平常不過的事情了,那當數據量非常大,數據存儲的媒介不是數據庫,或者檢索方式要求更為靈活的時候,我們該如何實現數據的檢索呢?為數據建立索引吧,利用索引技術可以更靈活更快捷的實現檢索功能。     以下我要介紹的是.NET版的Lucene在實際項目中是如何應用的。
  • 案例概要
    我以一個文件檢索系統為例,主要功能就是為硬盤中大量文件建立一個統一的檢索平台,並且不使用數據庫。
  • 思路
    該系統主要分為兩部分,第一部分是索引的管理,為文件建立或更新索引;第二部分是文件的檢索,根據關鍵詞與索引庫進行匹配並獲得相關信息。這兩部分功能可以整合在一個項目中,也可以分開在不同的項目中。
  • 分詞
    需要注意的是不論是索引的管理還是文件的檢索都離不開一樣東西,那就是分詞,正是分詞的力量將多個關鍵字可以按照分詞規則精確的與龐大的索引庫進行匹配。      因為Lucene是國外的技術,所以對中文分詞支持度並不高,這裡我推薦使用盤古分詞。
  • 索引的管理
    索引的管理主要是建立索引、更新索引和刪除索引。需要注意的是用做識別的ID字段不能使用帶有特殊符號的字符串,盡量使用詞或者編號等,不然索引可能無法刪除,也無法正常更新。
 
 FSDirectory directory = FSDirectory.Open( DirectoryInfo(.IndexDataDir),  
  isExist =            
 PanGuAnalyzer analyzer =  
 IndexWriter writer =  IndexWriter(directory, analyzer, ! 
  (IndexDataQueue.Count >       Document document =  
     BaseDataMode mode =                                  (KeyValuePair<, > kv                       
                     document.Add(               };                        
             MultiFieldQueryParser parser =  MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29,  [] {              Query query = parser.Parse(mode.Content[               (KeyValuePair<, > kv                   document.Add(           };                        MultiFieldQueryParser parser =  MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29,  [] {              Query query = parser.Parse(mode.Content[          };          : { };    
  
  
  directory.Close();
  • 文件檢索
    文件檢索主要的過程是,先對查詢的內容進行分詞,將其分解為多個關鍵詞,然後使用Lucene內置的搜索功能對已建好的索引庫進行查詢,最後將搜索結果顯示出來。
 
 FSDirectory directory = FSDirectory.Open( DirectoryInfo(.IndexDir),  IndexReader reader = IndexReader.Open(directory,  IndexSearcher searcher =  
 BooleanQuery queryOr =   ( word        (KeyValuePair<, > kv           TermQuery query =  TermQuery(         
     
 TopDocs tds = searcher.Search(queryOr, ,  ScoreDoc[] docs =  ( i = ; i < docs.Length; i++       docId =     Document doc =  content = doc.Get(   
  • 資源

  DLL與詞庫:http://download.csdn.net/detail/aaakingwin/7208679

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved