亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

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

2019-11-17 03:13:21
字體:
來源:轉載
供稿:網友

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

  • 引言
在軟件系統中查詢數據是再平常不過的事情了,那當數據量非常大,數據存儲的媒介不是數據庫,或者檢索方式要求更為靈活的時候,我們該如何實現數據的檢索呢?為數據建立索引吧,利用索引技術可以更靈活更快捷的實現檢索功能。 以下我要介紹的是.NET版的Lucene在實際項目中是如何應用的。
  • 案例概要
我以一個文件檢索系統為例,主要功能就是為硬盤中大量文件建立一個統一的檢索平臺,并且不使用數據庫。
  • 思路
該系統主要分為兩部分,第一部分是索引的管理,為文件建立或更新索引;第二部分是文件的檢索,根據關鍵詞與索引庫進行匹配并獲得相關信息。這兩部分功能可以整合在一個項目中,也可以分開在不同的項目中。
  • 分詞
需要注意的是不論是索引的管理還是文件的檢索都離不開一樣東西,那就是分詞,正是分詞的力量將多個關鍵字可以按照分詞規則精確的與龐大的索引庫進行匹配。 因為Lucene是國外的技術,所以對中文分詞支持度并不高,這里我推薦使用盤古分詞。
  • 索引的管理
索引的管理主要是建立索引、更新索引和刪除索引。需要注意的是用做識別的ID字段不能使用帶有特殊符號的字符串,盡量使用詞或者編號等,不然索引可能無法刪除,也無法正常更新。
 1 //指定索引庫文件存放文件位置 2 FSDirectory directory = FSDirectory.Open(new DirectoryInfo(this.IndexDataDir), new NativeFSLockFactory()); 3 //判斷索引文件目錄是否存在 4 bool isExist = IndexReader.IndexExists(directory); 5 if (isExist) 6 { 7     if (IndexWriter.IsLocked(directory)) 8     { 9         IndexWriter.Unlock(directory);10     }11 }12 //盤古分詞器13 PanGuAnalyzer analyzer = new PanGuAnalyzer();14 //索引寫入類15 IndexWriter writer = new IndexWriter(directory, analyzer, !isExist, IndexWriter.MaxFieldLength.UNLIMITED);16 //循環隊列執行操作17 while (IndexDataQueue.Count > 0)18 {19     Document document = new Document();20 //這是我為索引數據自定義的模型類,主要內容是文件的路徑、名稱、內容和索引管理的操作類型(新增、更新、刪除)21     BaseDataMode mode = IndexDataQueue.Dequeue();22     switch (mode.Type)23     {24         case OperationType.Insert:25             {26                 foreach (KeyValuePair<string, string> kv in mode.Content)27                 {28                     //這里kv.Key是設置索引內字段的名稱,kv.Value是這個字段內存儲的內容。29                     document.Add(new Field(kv.Key, kv.Value, Field.Store.YES, Field.Index.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS));30                 }31                 writer.AddDocument(document);32             }; break;33         case OperationType.Update:34         {35             //設置刪除條件36             MultiFieldQueryParser parser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29, new string[] { "id" }, analyzer);37             Query query = parser.Parse(mode.Content["id"]);38             writer.DeleteDocuments(query);39             foreach (KeyValuePair<string, string> kv in mode.Content)40             {41                 document.Add(new Field(kv.Key, kv.Value, Field.Store.YES, Field.Index.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS));42             }43             writer.AddDocument(document);44         }; break;45         case OperationType.Delete:46         {47             MultiFieldQueryParser parser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29, new string[] { "id" }, analyzer);48             Query query = parser.Parse(mode.Content["id"]);49             writer.DeleteDocuments(query);50         }; break;51         default: { }; break;52     }53 }54 //提交操作55 writer.Commit();56 //優化57 writer.Optimize();58 //關閉連接59 writer.Close();60 directory.Close();
  • 文件檢索
文件檢索主要的過程是,先對查詢的內容進行分詞,將其分解為多個關鍵詞,然后使用Lucene內置的搜索功能對已建好的索引庫進行查詢,最后將搜索結果顯示出來。
 1 //指定索引庫文件存放文件位置 2 FSDirectory directory = FSDirectory.Open(new DirectoryInfo(this.IndexDir), new NativeFSLockFactory()); 3 IndexReader reader = IndexReader.Open(directory, true); 4 IndexSearcher searcher = new IndexSearcher(reader); 5 //設置關鍵詞在條件中為OR關系 6 BooleanQuery queryOr = new BooleanQuery(); 7 foreach (string Word in SplitContent.SplitByPanGu(keyword)) 8 { 9     foreach (KeyValuePair<string, string> kv in Mode.Content)10     {11         TermQuery query = new TermQuery(new Term(kv.Key, word));12         //這里設置條件為Or關系13         queryOr.Add(query, BooleanClause.Occur.SHOULD);14     }15 }16 //獲取搜索結果       17 //1000為搜索文件的下標限制,設置這個可以控制檢索的范圍,也可以用于分頁顯示18 TopDocs tds = searcher.Search(queryOr, null, 1000);19 ScoreDoc[] docs = tds.scoreDocs;20 for (int i = 0; i < docs.Length; i++)21 {22     int docId = docs[i].doc;23     Document doc = searcher.Doc(docId);24 string content = doc.Get("索引內字段的名稱");25 }26  
  • 資源

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产天堂久久国产91| 久久这里只有精品99| 久久精品91久久香蕉加勒比| 亚洲色图美腿丝袜| 97av在线视频免费播放| 中文字幕日韩精品在线观看| 欧美黑人极品猛少妇色xxxxx| 精品视频在线导航| 欧美精品18videosex性欧美| 九九九久久国产免费| 亚洲欧美激情一区| 久久艳片www.17c.com| 亚洲天堂av在线免费观看| 亚洲国产中文字幕久久网| 日韩中文字幕国产| 国产精品伦子伦免费视频| 日韩中文在线不卡| 国产精彩精品视频| 国产精品视频在线观看| 欧美大片在线看| 成人激情免费在线| 欧美激情视频网址| 日韩av影院在线观看| 亚洲美女av在线| 亚洲男人天堂手机在线| 欧美中文字幕在线视频| 青草成人免费视频| 亚洲男人天堂视频| 91黑丝高跟在线| xvideos成人免费中文版| 欧美视频一区二区三区…| 欧美精品久久久久久久久久| 亚洲影院污污.| 亚洲国产婷婷香蕉久久久久久| 日韩在线视频线视频免费网站| 久久视频国产精品免费视频在线| 亚洲国产精品va在线看黑人| 在线午夜精品自拍| 亚洲欧美另类中文字幕| 亚洲一区二区三区四区视频| 欧美黑人xxxⅹ高潮交| 久久6免费高清热精品| 精品久久久香蕉免费精品视频| 岛国视频午夜一区免费在线观看| 国产精品久久久久久久天堂| 久久99国产精品久久久久久久久| 日韩中文字幕网| 国产精品福利小视频| 丝袜情趣国产精品| 国产精品美女免费视频| 色偷偷偷综合中文字幕;dd| 亚洲国产一区二区三区四区| 日本sm极度另类视频| 国产精品女主播| 亚洲一区二区三区在线视频| 久久久免费高清电视剧观看| 国产91网红主播在线观看| 国产精品直播网红| 欧美精品在线网站| 国产精品久久久久av免费| 欧美国产在线视频| 久久中文字幕视频| 国产91在线高潮白浆在线观看| 国产最新精品视频| 久久免费视频观看| 欧美一区二三区| 国自产精品手机在线观看视频| 日本中文字幕不卡免费| 亚洲美腿欧美激情另类| 日韩av网址在线观看| 亚洲欧美成人在线| 久久伊人精品天天| 精品国产老师黑色丝袜高跟鞋| 欧美成aaa人片在线观看蜜臀| 亚洲精品国产欧美| 91亚洲午夜在线| 亚洲福利视频久久| 国内精品400部情侣激情| 欧美亚洲午夜视频在线观看| 欧美xxxx18性欧美| 欧美日韩中文在线| 亚洲欧美日韩精品久久奇米色影视| 精品国产老师黑色丝袜高跟鞋| 久久亚洲综合国产精品99麻豆精品福利| 在线观看日韩欧美| xxxxx成人.com| 日韩在线播放av| 欧美日韩一区二区免费在线观看| 91精品视频大全| 精品国产老师黑色丝袜高跟鞋| 亚洲缚视频在线观看| 日韩免费高清在线观看| 欧美大片在线看免费观看| 精品一区二区三区电影| 午夜精品视频网站| 中文欧美在线视频| 菠萝蜜影院一区二区免费| 亚洲美女自拍视频| 国产亚洲精品成人av久久ww| 欧美性jizz18性欧美| 日韩欧美一区视频| 亚洲欧美日韩精品| 欧美日韩激情网| 91久久嫩草影院一区二区| 国产精品女人网站| 欧美一区二区视频97| 国产97在线亚洲| 欧美在线视频a| 欧美极品少妇xxxxⅹ喷水| 欧美黑人视频一区| 亚洲最大的网站| 国内免费精品永久在线视频| 欧美性色xo影院| 成人久久久久久| 91精品久久久久| 日韩精品在线免费播放| 欧美床上激情在线观看| 中文字幕亚洲一区二区三区| 国产日本欧美视频| 日韩美女av在线免费观看| 久久理论片午夜琪琪电影网| 国产一区二区三区久久精品| 亚洲精品日韩在线| 成人免费观看49www在线观看| 日韩一区二区福利| 欧美大全免费观看电视剧大泉洋| 国产成人一区二区在线| 中文字幕亚洲专区| 国产精品久久久久久久久久久久| 日韩欧美在线视频免费观看| 91国语精品自产拍在线观看性色| 911国产网站尤物在线观看| 欧美夫妻性生活视频| 欧美精品性视频| 国产精品久久电影观看| 欧美丰满少妇xxxxx| 尤物精品国产第一福利三区| 国内精品久久久久久| 亚洲国产精品系列| 国产精品成人一区二区| 福利二区91精品bt7086| 4444欧美成人kkkk| 成人羞羞国产免费| 国产成人jvid在线播放| 国产精品成人在线| 日韩精品视频免费在线观看| 国产精品夜间视频香蕉| 欧美成人四级hd版| 成人高h视频在线| 国产精品男人爽免费视频1| 亚洲色图国产精品| 日韩精品在线第一页| 日韩精品极品毛片系列视频| 欧美激情一级精品国产| 亚洲午夜精品久久久久久久久久久久| 欧美视频不卡中文| 亚洲成人a**站| 欧美极品少妇xxxxⅹ免费视频| 久久av中文字幕| 最近2019年好看中文字幕视频| xxxxx成人.com| 欧美激情中文字幕在线| 亚洲va码欧洲m码| 久久久国产精彩视频美女艺术照福利|