或許你還你知道HubbleDotnet,下面簡單對HubbleDotnet坐下介紹。
HubbleDotNet是由盤古分詞作者——eaglet 開發的一個基于.net framework 的開源免費的全文搜索數據庫組件。開源協議是 Apache 2.0。HubbleDotNet提供了基于SQL的全文檢索接口,使用者只需會操作SQL,就可以很快學會使用HubbleDotNet進行全文檢索。
HubbleDotNet可以實現全文索引和查詢、多域檢索和排序、分組統計、消重、分類、聚類、多表關聯查詢等等一系列全文檢索和數據挖掘功能。 HubbleDotNet提供開放的數據庫適配器接口,可以和各種數據庫完美整合,為各種數據庫系統附加全文檢索和數據挖掘功能。
HubbleDotNet設計了較為完善的并發控制程序,數據的增刪改查可以多線程同時并發進行,沒有任何沖突。HubbleDotNet還進行了緩存和內存管理設計,可以幫助用戶最大限度的提高查詢的效率。HubbleDotNet力爭在未來的幾年內超過Lucene.net成為.net開發環境中最受歡迎的全文檢索組件。
項目源代碼地址:http://hubbledotnet.codeplex.com/
如果你想學習實用HubbleDotNet,請看作者的博客介紹:HubbleDotNet開源全文搜索數據庫項目--技術詳解
-------------------------------------------------------------------------邪惡的分割線------------------------------------------------------------------------------
下面講述的是 scott (QQ昵稱) 對HubbleDotNet的進一步開發的 LinqToHubble。(最近更新:2014年9月12日,更新修復2個bug)
LinqToHubble 是一個簡單實用的hubbledotnet的LINQ PRovider,支持Match、Contains匹配,支持Take、Skip分頁,支持OrderBY排序,支持多Where嵌套,簡單優化表達式 放大了長詞得分,數據也是延遲取的……快速實用步驟:1、首先下載dll文件,并添加引用。
1).下載地址1:http://files.VEVb.com/moretry/linq2hubble.zip
2).下載地址2:http://download.csdn.net/detail/jinliang99/7910075

3).dll文件請全部添加引用,Hubble.net 的 dll為最新版本編譯的。
4).請將dictionaries 盤古分詞字典文件夾放到程序運行根目錄,或者包含著在項目中(較新則復制),其實是編譯器幫我們復制到程序運行根目錄下的。
2、在程序的配置文件內添加hubbledotnet的section,配置文件如下:
<configuration> <configSections> <section name="hubbledotnet" requirePermission="false" type="ZY.Search.Pro.Core.ConfigInfo, ZY.Search.Pro" ></section> </configSections> <hubbledotnet> <connectionString>server=your connectionstring;uid=hubble username;pwd=hubble passWord;database=hubble database</connectionString> <fragmentSize>200</fragmentSize> <cacheTimeout>1000</cacheTimeout> <commandTimeout>100</commandTimeout> <highlighterFormatter> <font color="red">,</font> </highlighterFormatter> </hubbledotnet></configuration>
注意事項:configSections 節點要在 configuration 的第一節點。 連接字符串自己替換下,沒有用戶名和密碼的可以刪除 uid=hubble username;pwd=hubble password;
3、構造自己的實體,根據自己的hubble數據表構造自己的model示例,需要添加system.data.linq.dll的引用。
using System.Data.Linq.Mapping;[Table(Name = "Member")]//hubbledotnet服務器里的表名稱public class Member{ [Column]//缺省為屬性名 public string Id { get; set; } [Column(Name = "Name^10")]//字段權重 10 默認1 public string Name { get; set; } [Column(Name = "Description^5")]//字段權重 5 默認1 public string Description { get; set; } }4、根據具體業務編寫自己的代碼:
static void Main(){ string keyWords = "關鍵詞"; DatabaseDataContext dc = new DatabaseDataContext(); var result = dc.GetTable < Member > ().Where(x = > x.Name.Match(keyWords) || x.Description.Match(keyWords)); # region //result = from item in result // where item.Name.Contains(keywords, true) //也支持這種寫法 // select item; # endregion //region 統計總數 //var count = result.Count(); foreach(var v in result.AsHighlight < Member > (keywords)) //高亮這樣用AsHighlight,不高亮您隨便 //foreach(var v in result)不高亮 { Console.WriteLine(v.Name); } Console.ReadKey();}5、哦,不好意思,作者說沒有第五步了。此文為轉載,原作者的博客地址:http://www.itrefer.com/index.php/archives/15。。。。
是不是很簡單啊,我也是初學者,我感覺很快就能上手了。
Hubble.net 1群:128951966 Hubble.net 2群:161508409 歡迎學習Hubble.net的來一起交流學習。
新聞熱點
疑難解答