或许你还你知道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.cnblogs.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></fragmentSize>
<cacheTimeout></cacheTimeout>
<commandTimeout></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的来一起交流学习。

 

最新文章

  1. 微信 winwre 移动调试
  2. PHP的学习--cookie和session
  3. virtualenv中ImportError: No module named django
  4. 【Java MyBatis Generator】使用generator自动生成Dao,Mapping和实体文件
  5. 一个新人对JavaScript的内容简单介绍
  6. away3d学习
  7. 关于frameset中指定区域回退的实现
  8. SGU 170.Particles
  9. 内置对象Cookie和Session有何不同【常见面试题】
  10. redis集群篇
  11. sql语句基本查询操作
  12. js动态获取select选中的option
  13. Spring 12 种 常用注解!
  14. WEB后台认证机制
  15. 关于daterangepicker的配置
  16. iOS调用第三方地图App进行导航方法
  17. 《构建之法》阅读笔记06-项目经理PM
  18. 4.tar的各个参数详解
  19. C++ 基本的输入输出
  20. Canvas 绘制矩形,圆形,不规则图形(线条),渐变等图像效果

热门文章

  1. MySql的基本架构演变
  2. dhtmlx uploader使用
  3. 百度BAE的使用
  4. 控制span的width属性及display属性值的选择
  5. 一个性能较好的JVM参数配置
  6. oracle 使用正则表达式获取字符串中包含的数字
  7. js td innerHTML
  8. 【深度好文】多线程之WaitHandle--&gt;派生-》Mutex信号量构造
  9. 骗分大法之-----分块||迷之线段树例题a
  10. linux 基本工具相关