这篇文章我来说明一下hubble+sqlserver,在接下来我还会写一篇hubble+mongodb的文章。在这里主要先介绍hubble和MSsqlserver的用法。

1,hubble.net

首先我先来简单介绍一下hubble,hubble主要在项目中的应用还是在全文搜索上,它和lucene有本质的不同,当然各自有各自的优点,而且hubble有逐渐取代lucene的趋势。我自己也进行了一下测试,测试结果待会再说。

简单的先说一下hubble的安装×86的还是64的,选择自己相同的信号下载,安装时候需要注意,需要输入一个key这个是免费获取的,

获取的网站http://www.hubbledotnet.com/key.aspx。填上邮箱很快就发到你邮箱里。

安装完成后,打开hubble提示下图,填上127.0.0.1即可

hubble+sqlserver

下图就是进入后的主界面,跟sqlserver很像,用法也很像

hubble+sqlserver

接下来你可以选择升级,如果不升级的话,这么用完全没有问题,但是如果你想用hubble+mongodb的话,就得进行升级,升级的方法我在hubble+mongodb里再去写吧,这里就不升级了,用默认的。

下面进行创建数据库点击鼠标右键,在弹出的菜单选择CreateDataBase,如下图:

hubble+sqlserver

打开CreateDataBase窗口,填写信息如下(第一个是数据库名称,第二个是数据库位置,第三个是数据库种类,如果是sqlserver2005以上的版本就选择sqlserver2005,最后一个是链接字符串)

hubble+sqlserver

在建立的News数据库上单击鼠标右键,在弹出的菜单上选择Create Table项,如下图:

hubble+sqlserver

打开Create Table窗口,并填写建表的相关信息(第一个参数是表名,第二个是表的位置,第三个是链接的数据库,最后一个是链接字符串),如下图:

hubble+sqlserver

点击Next按钮,并填写相关信息(这是最重要一步),如下图:index model是选择hubble的模式,是主动还是被动(主动和被动在程序中所用的代码是不一样的),主动的意思我简单的说,例如我新建一张hubble表,你再到sqlserver中看一下,数据库中也回自动添加一张表,也就是说用主动模式的话,你如果想要添加数据,直接在hubble进行添加就行了。但是如果是被动(build index from exist table)的话,你如果想要用代码添加数据,你必须同时往sqlserver和hubble里同时添加。一般采用被动的方式的比较多,这种方法比较灵活。exist table name or view name (这个很简单吧,就是表名,但是这里是指的sqlserver里的那个你要关联的表)。incremental model 这个是hubble的模式,从英文意思就能看出来第一个是只能增加,不能修改,所以一般都是选择第二种。

hubble+sqlserver

然后点击next 如图(这里面主要说的就是要选择一个字段作ID,手动写在下面。还有就是analyzer,分词器,有三个可以选择,就是不同的分词器,我习惯用pangu,盘古在分中文词汇还是比较好的)

hubble+sqlserver

点击next如图(其实就是把我们的操作生成了一个脚本,如果自己特别熟悉hubble的语法后就可以直接用命令输入了,这跟sqlserver是一样的)

hubble+sqlserver

提示是否创建索引图如下点击是

hubble+sqlserver

点击是后开始创建,如图,点击start开始创建

hubble+sqlserver

完成后关闭,hubble的表就创建好了。

HubbleHandler的代码如下

 1 internal class HubbleHandler
 2     {
 3         static string connStr = ConfigurationManager.AppSettings["hubble"];//连接字符串
 4         public static void ExecuteNonQuery(string hubbleSql, HubbleParameterCollection parameters)
 5         {
 6             using (HubbleAsyncConnection conn = new HubbleAsyncConnection(connStr))
 7             {
 8                 conn.Open();
 9                 HubbleCommand matchCmd = new HubbleCommand(hubbleSql, conn);
10                 for (int i = 0; i < parameters.Count; i++)
11                     matchCmd.Parameters.Add(parameters[i].ParameterName, parameters[i].Value);
12                 try { matchCmd.ExecuteNonQuery(); }
13                 catch { }
14             }
15         }
16 
17         public static DataSet ExecuteSelect(string hubbleSql, HubbleParameterCollection parameters, out int count)
18         {
19             DataSet ds = new DataSet(); count = 0;
20             using (HubbleAsyncConnection conn = new HubbleAsyncConnection(connStr))
21             {
22                 conn.Open();
23                 HubbleDataAdapter adapter = new HubbleDataAdapter();
24                 adapter.SelectCommand = new HubbleCommand(hubbleSql, conn);
25                 int cacheTimeout = 10;
26                 adapter.SelectCommand.CacheTimeout = cacheTimeout;//
27                 for (int i = 0; i < parameters.Count; i++)
28                     adapter.SelectCommand.Parameters.Add(parameters[i].ParameterName, parameters[i].Value);
29                 HubbleCommand cmd = adapter.SelectCommand;
30                 try
31                 {
32                     ds = cmd.Query(cacheTimeout);
33                     count = ds.Tables[0].MinimumCapacity;
34                 }
35                 catch { }
36             }
37             return ds;
38         }
39 
40 
41     }
View Code

相关文章:

  • 2022-12-23
  • 2021-05-22
  • 2021-08-26
  • 2022-03-03
  • 2021-08-27
  • 2021-06-03
  • 2022-01-28
猜你喜欢
  • 2022-01-16
  • 2021-07-10
  • 2021-07-27
  • 2021-12-12
  • 2021-12-13
  • 2021-04-04
  • 2022-02-07
相关资源
相似解决方案