或许你还你知道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。
LinqToHubble 是一个简单实用的hubbledotnet的LINQ Provider,支持Match、Contains匹配,支持Take、Skip分页,支持OrderBY排序,支持多Where嵌套,简单优化表达式 放大了长词得分,数据也是延迟取的…… 快速实用步骤:<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>
class="clearfix">注意事项:configSections 节点要在 configuration 的第一节点。 连接字符串自己替换下,没有用户名和密码的可以删除 uid=hubble username;pwd=hubble password;
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; } }
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(); }
是不是很简单啊,我也是初学者,我感觉很快就能上手了。
Hubble.net 2群:161508409 欢迎学习Hubble.net的来一起交流学习。