eaglet

本博专注于基于微软技术的搜索相关技术
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Hubble.Net

摘要:从上次更新HubbletDotNet 到现在一晃3年多了。2012年我所在的公司被澳洲电信收购,从此我就变得特别忙,没有时间继续 HubbleDotNet 的开发和维护,非常非常的抱歉。HubbleDotNet 从08年开始做一直只有我一个开发者,我一直想找到合作的开发者,但都没有如愿。非常感谢Hu... 阅读全文

posted @ 2015-09-29 21:07 eaglet 阅读(4721) 评论(25) 推荐(7) 编辑

摘要:经常有人问我怎么将类似word,pdf这样的文档转换为文本然后索引,.net 这方面的解决方案不是很多,为了方便大家,我花了一天时间自己做了一个。 阅读全文

posted @ 2013-01-10 10:44 eaglet 阅读(13475) 评论(59) 推荐(43) 编辑

摘要:HubbleDotNet 通过支持 Mongodb 也使其本身同时具备了 no-sql 的解决方案。本文将重点概述Hubble+Mongodb 的功能以及和hubble+sql, lucene.net 的一些性能测试对比。 阅读全文

posted @ 2012-05-10 12:01 eaglet 阅读(13456) 评论(68) 推荐(8) 编辑

摘要:在中文搜索中,分词技术是一个比较关键的技术,我们往往会遇到查询某个关键字无法匹配到相应文档的问题,这种问题往往都是索引的分词不理想造成的,倒排索引的技术特点决定了如果查询的关键字不在索引的分词中,则无法查出相应的文档。为了帮助使用者分析分词问题,hubbledotnet 专门提供几个存储过程来帮助检查索引分词的情况。 阅读全文

posted @ 2012-02-15 09:27 eaglet 阅读(7693) 评论(13) 推荐(9) 编辑

摘要:经过2周多的努力,HubbleDotNet 的内存索引功能终于搞好了。有了内存索引,搜索不再去读硬盘,实时性大大提高了。hubble的内存索引不同于lucene 的内存索引,本文将具体介绍一下hubble 的内存索引功能和一些内部机制。 阅读全文

posted @ 2011-08-10 06:09 eaglet 阅读(7716) 评论(45) 推荐(10) 编辑

摘要:1.1.4.0 版本对底层的查询算法做了很大改进,特别是对单个关键字的查询速度,原来版本当匹配100万时用时 130ms,这个版本用时只有30ms。 这个速度大概是 lucene.net 的三倍左右。 阅读全文

posted @ 2011-07-24 17:11 eaglet 阅读(2195) 评论(6) 推荐(2) 编辑

摘要:HubbleDotNet 在设计之初就定位为一个开放式的搜索平台,分词器,得分算法,数据库适配器,存储过程,函数等等都可以通过编写自定义的插件来定制。目前版本分词器,数据库适配器的自定义接口已经开放,得分算法的自定义接口也将在最近开放出来。本文将讲述如何编写自己的分词器。 阅读全文

posted @ 2011-06-03 06:05 eaglet 阅读(7091) 评论(19) 推荐(7) 编辑

摘要:HubbleDotNet 1.1.2 以前版本客户端和服务器之间都是同步 TCP Socket 方式通讯,这种方式要为每个连接保持一个TCP通道,每次建立连接都要创建新的TCP连接,效率很低。而且有最大连接数限制,当服务器很忙时,1.1.2 以前版本经常会出现 Too many connects on server 错误,虽然通过增大 MaxConnectNum 的值可以缓解,但无法根治。1.1.2 版本推出了全新的异步通讯模式,同一个客户端和服务器之间所有的 Hubbble 连接都共用一个 TCP 链路,这个设计彻底解决了最大连接数不够的问题,大大提高了系统的处理能力 阅读全文

posted @ 2011-05-30 08:11 eaglet 阅读(5022) 评论(9) 推荐(4) 编辑

摘要:全文索引的分布式检索粗想想似乎很简单,感觉就是把多个接入点搜索出来的数据做个合并排序就可以,但如果想要做好,满足商业应用要求,这里面涉及到很多算法优化的问题,比如多路排序的优化,动态路由,翻页的优化,通讯的优化,分发复制,冗余和故障转移等等。从今天开始,我将逐步讲解HubbleDotNet 在分布式检索方面的众多算法考虑。由于涉及的算法很多,无法在一篇全部阐述,我打算采用由浅入深的思路,先从比较简单的算法开始。本文将介绍翻页的优化技术。 阅读全文

posted @ 2011-05-18 08:48 eaglet 阅读(5296) 评论(14) 推荐(9) 编辑

摘要:HubbleDotNet 目前已经有很多用户,但大部分用户还仅仅停留在使用层面,真正深入去研究和了解的人不是很多。作为一个开源项目,HubbleDotNet 除了可以提供应用的需要外,其本身的代码对希望了解信息检索和底层软件开发技术的开发人员也应该有一定的参考作用。为了方便对这方面感兴趣的开发人员阅读和理解 HubbleDotNet 的代码,我把HubbleDotNet 的软件设计架构公布出来,供大家参考。HubbleDotNet中文社区 目前还不是很活跃,主要还是我一个人在回答其他网友的提问,我希望对这方面有兴趣的网友在深入了解了HubbleDotNet 的内部机制后,可以更多的参与到这个社区的建设中来,众人拾柴火焰高。 阅读全文

posted @ 2011-03-04 10:49 eaglet 阅读(10100) 评论(27) 推荐(4) 编辑

摘要:HubbleDotNet 1.1 版本提供了一个后台任务调度功能,这个功能可以让你设置一些后台任务来定时执行一些系统维护操作,比如同步数据,优化索引等等。以前版本这些功能都需要使用者自己编程实现,1.1 以后版本只需要做个设置就可以了,不需要写任何代码了。 阅读全文

posted @ 2011-03-02 19:57 eaglet 阅读(6661) 评论(27) 推荐(8) 编辑

摘要:今天专门测试了对索引文件全部缓存到内存以及对单词的倒排索引结果进行缓存。测试下来文件缓存到内存对搜索的速度提高非常有限,即便在磁盘的 Avg Disk Queue length = 100 时,性能的提升也很有限。分析下来,原因大致是因为顺序读取文件时操作系统已经做了缓存。 而倒排结果的缓存对性能提升能起到一定的作用,但在返回结果集 100万以下时,提升有限。今天测试返回结果集达到 780 万时,采用倒排结果缓存技术用时搜索是 99ms,而直接读文件方式下搜索用时500ms,这个性能的提升还是比较明显,但同时带来的是大量的内存开销,大约1000万的倒排结果需要消耗160M左右的内存。 从测试结 阅读全文

posted @ 2011-01-11 12:28 eaglet 阅读(1224) 评论(5) 推荐(0) 编辑

摘要:HubbleDotNet 推出一年多来,得到了大量用户的支持和使用,其中有些用户的搜索访问量较大,在使用过程中有时会因为同时并发访问过大,出现 Too many connects on server 这个错误,为了缓解这个问题,HubbleDotNet 的 V1.0.4.0 版本做了一些改进,本文将介绍这个改进即相关原理。 阅读全文

posted @ 2010-11-26 07:32 eaglet 阅读(10165) 评论(20) 推荐(11) 编辑

摘要:本文解析HubbleDotNet 如何和 Oracle 数据库连接并同步。 阅读全文

posted @ 2010-09-21 09:21 eaglet 阅读(2731) 评论(4) 推荐(0) 编辑

摘要:本文讲述如何指定文档的权重 阅读全文

posted @ 2010-09-15 14:20 eaglet 阅读(2478) 评论(24) 推荐(0) 编辑

摘要:本文讲述如何在搜索时指定字段权重 阅读全文

posted @ 2010-09-15 14:13 eaglet 阅读(2198) 评论(0) 推荐(1) 编辑

摘要:本文讲述如何在搜索时指定单词权重 阅读全文

posted @ 2010-09-15 14:08 eaglet 阅读(2976) 评论(3) 推荐(0) 编辑

摘要:本文讲述如何创建 HubbleDotNet 的数据表 阅读全文

posted @ 2010-09-14 09:35 eaglet 阅读(5108) 评论(1) 推荐(0) 编辑

摘要:HubbleDotNet 的查询语法为类 SQL 语句,本文以示例的形式讲述HubbleDotNet 的各种查询方法。随着功能不断的增加,查询方法还会不断补充 阅读全文

posted @ 2010-09-08 13:58 eaglet 阅读(10753) 评论(46) 推荐(6) 编辑

摘要:很多网友在使用 Lucene.net (Lucene java 版本也是一样)后会感觉Lucene.net 的匹配相关度存在问题,搜索得到的结果往往不是希望的结果,不完全匹配的记录往往比完全匹配的记录排序还要靠前,很多人试图通过分词来解决,中文环境搜索,分词确实能解决一些问题,但不能根本解决问题,而英文环境下,分词根本无法解决任何问题。问题的本质是由于Lucene的得分算法缺陷造成的,不改进得分算法根本不能根本解决问题。HubbleDotNet的得分算法参考了Lucene的得分算法并做了重大改进,匹配相关度比Lucene.net 有了显著提高。本文结合一个极端的例子来分析两者得分算法的异同,并从原理上讲解为什么HubbleDotNet 的匹配相关度要比Lucene.net 的高。 阅读全文

posted @ 2010-09-07 08:51 eaglet 阅读(8282) 评论(31) 推荐(13) 编辑