eaglet

本博专注于基于微软技术的搜索相关技术
posts - 189, comments - 3709, trackbacks - 26, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

随笔分类 - Hubble.Net

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

posted @ 2015-09-29 21:07 eaglet 阅读(2738) | 评论 (12) 编辑 |

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

posted @ 2013-01-10 10:44 eaglet 阅读(10913) | 评论 (59) 编辑 |

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

posted @ 2012-05-10 12:01 eaglet 阅读(12237) | 评论 (67) 编辑 |

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

posted @ 2012-02-15 09:27 eaglet 阅读(6829) | 评论 (13) 编辑 |

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

posted @ 2011-08-10 06:09 eaglet 阅读(6889) | 评论 (45) 编辑 |

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

posted @ 2011-07-24 17:11 eaglet 阅读(1961) | 评论 (6) 编辑 |

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

posted @ 2011-06-03 06:05 eaglet 阅读(6217) | 评论 (18) 编辑 |

摘要: 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 阅读(4492) | 评论 (9) 编辑 |

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

posted @ 2011-05-18 08:48 eaglet 阅读(4737) | 评论 (14) 编辑 |

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

posted @ 2011-03-04 10:49 eaglet 阅读(8934) | 评论 (27) 编辑 |

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

posted @ 2011-03-02 19:57 eaglet 阅读(6049) | 评论 (27) 编辑 |

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

posted @ 2011-01-11 12:28 eaglet 阅读(932) | 评论 (5) 编辑 |

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

posted @ 2010-11-26 07:32 eaglet 阅读(9367) | 评论 (20) 编辑 |

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

posted @ 2010-09-21 09:21 eaglet 阅读(2100) | 评论 (4) 编辑 |

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

posted @ 2010-09-15 14:20 eaglet 阅读(2070) | 评论 (24) 编辑 |

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

posted @ 2010-09-15 14:13 eaglet 阅读(1839) | 评论 (0) 编辑 |

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

posted @ 2010-09-15 14:08 eaglet 阅读(2597) | 评论 (3) 编辑 |

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

posted @ 2010-09-14 09:35 eaglet 阅读(4332) | 评论 (1) 编辑 |

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

posted @ 2010-09-08 13:58 eaglet 阅读(9713) | 评论 (46) 编辑 |

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

posted @ 2010-09-07 08:51 eaglet 阅读(7432) | 评论 (31) 编辑 |

摘要: 本文为HubbleDotNet 和 Lucene.net 的性能测试报告,HubbleDotNet 在索引和搜索方面的性能都明显优于Lucene.net。阅读全文

posted @ 2010-09-03 11:40 eaglet 阅读(12954) | 评论 (48) 编辑 |

摘要: HubbleDotNet 是一个基于.net framework 的开源免费的全文搜索数据库组件。阅读全文

posted @ 2010-09-03 10:09 eaglet 阅读(14755) | 评论 (24) 编辑 |

摘要: 本文介绍了如何通过HubbleDotNet对数据库现有表创建可修改的全文索引,并给出一些搜索示例,特别是Group by 功能的搜索示例。阅读全文

posted @ 2010-08-30 15:21 eaglet 阅读(7390) | 评论 (23) 编辑 |

摘要: HubbleDotNet 提供了一个开放的数据库适配器接口,不但可以和SQL SERVER 连接,也可以和包括Oracle 在内的任何数据库连接,为基于这些数据库的应用实现全文搜索功能。本文主要说明如何为基于Oracle 数据库开发的项目提供全文搜索功能。阅读全文

posted @ 2010-08-27 13:27 eaglet 阅读(2195) | 评论 (4) 编辑 |

摘要: HubbleDotNet 0.9 正式版本(0.9.6.0) 发布阅读全文

posted @ 2010-08-25 14:45 eaglet 阅读(838) | 评论 (9) 编辑 |

摘要: 对于大部分应用来说,全文搜索功能只是应用的部分功能而非全部功能,很多系统在设计之初往往缺乏全文搜索方面的设计,搜索功能多是用数据库的 like 语句来实现,随着系统容量的增大和用户数量的增加,这种 like 无论从性能还是功能方面都无法满足站内搜索的需要。HubbleDotNet 为这部分用户提供了松耦合度的系统集成方案,用户只需一小时不到时间就可以实现现有系统的全文搜索功能的后台部分,无需对现有数据库表结构做任何改动,无需编写大量代码。其中自动和现有表数据同步是这个解决方案中的重要一环。本文重点介绍如何设置,以完成全文索引和现有数据表的数据同步。阅读全文

posted @ 2010-08-25 14:20 eaglet 阅读(9463) | 评论 (63) 编辑 |

摘要: HubbleDotNet 海量数据测试报告阅读全文

posted @ 2010-08-24 11:55 eaglet 阅读(4546) | 评论 (3) 编辑 |

摘要: 这个版本索引结构进行了大幅调整,占用内存大幅下降。索引和查询速度大幅提高阅读全文

posted @ 2010-07-19 13:35 eaglet 阅读(925) | 评论 (18) 编辑 |

摘要: 本文描述如何让HubbleDotNet 在被动表模式下和对应的数据表或视图同步。阅读全文

posted @ 2010-07-09 08:40 eaglet 阅读(4866) | 评论 (15) 编辑 |

摘要: 今天对 hubbledotnet 0.8.3.6 版本做了一个简单的性能测试,把测试结果公布一下。0.8.3.6 版本是0.8版本的最后一个小版本,后面将进入0.9版本,0.9 版本中我将调整目前的索引数据结构,占用内存数量和索引速度将会比0.8版本要更优化。不过这个0.8版本的测试数据我觉得也已经挺不错了,呵呵。阅读全文

posted @ 2010-06-11 11:07 eaglet 阅读(1878) | 评论 (19) 编辑 |

摘要: HubbleDotNet 可以非常方便的对数据库现有表或视图创建全文索引,整个过程人工干预的时间不超过5分钟。我将用几个篇幅来阐述如何对现有数据表创建全文索引。本篇将重点介绍如何创建 Append Only 模式的全文索引。 阅读全文

posted @ 2010-05-13 10:48 eaglet 阅读(9669) | 评论 (46) 编辑 |

摘要: 本文重点介绍Hubble.net 全文搜索数据库的数据库和数据表概念,并以图解的方式给出一些典型的数据流图。阅读全文

posted @ 2010-05-05 15:47 eaglet 阅读(7952) | 评论 (18) 编辑 |

摘要: Hubble.net 是一个开源项目,开源项目的特点就是反应迅速,功能推出会很快,版本会经常需要升级。本文将介绍如何进行版本升级。 在开始本文之前,先来看看 hubble.net 包含的组件都有哪些。 阅读全文

posted @ 2010-05-05 13:29 eaglet 阅读(6378) | 评论 (4) 编辑 |

摘要: Hubble.net 的数据库只是一个逻辑概念,设计这个逻辑概念的目的是为了便于对一些具有类似属性的数据表进行管理。Hubble.net 中并没有数据库这个实体,数据库在hubble.net 中可以被理解为一个数据表的管理群组。hubble.net 中的数据表必须归属于一个数据库,并在默认配置时继承所属数据库的公共属性。 阅读全文

posted @ 2010-05-04 14:03 eaglet 阅读(6563) | 评论 (38) 编辑 |

摘要: 本文介绍Hubble.net 开源全文搜索数据库项目的数据类型和索引类型阅读全文

posted @ 2010-05-04 08:26 eaglet 阅读(3921) | 评论 (6) 编辑 |

摘要: 这个系列文档将详细介绍HubbleDotNet 全文搜索数据库的技术和应用。阅读全文

posted @ 2010-04-07 14:44 eaglet 阅读(45289) | 评论 (180) 编辑 |

摘要: Hubble.net V0.7.2.0 版本发布阅读全文

posted @ 2009-12-18 20:21 eaglet 阅读(1896) | 评论 (19) 编辑 |

摘要: Hubble.net 是一个基于.net framework 的开源免费的全文搜索数据库组件。开源协议是 Apache 2.0。Hubble.net 提供了基于SQL的全文检索接口,使用者只需会操作SQL,就可以很快学会使用Hubble.net进行全文检索。Hubble.net 可以实现全文索引和查询、多域检索和排序、分组统计、消重、分类、聚类、多表关联查询等等一系列全文检索和数据挖掘功能。Hubble.net 提供开放的数据库适配器接口,可以和各种数据库完美整合,为各种数据库系统附加全文检索和数据挖掘功能。Hubble.net 设计了较为完善的并发控制程序,数据的增删改查可以多线程同时并发进行,没有任何冲突。Hubble.net 还进行了缓存和内存管理设计,可以帮助用户最大限度的提高查询的效率。Hubble.net 力争在未来的几年内超过Lucene.net成为.net开发环境中最受欢迎的全文检索组件。阅读全文

posted @ 2009-12-15 09:44 eaglet 阅读(8512) | 评论 (49) 编辑 |

摘要: Hubble.net 0.7.1.0 版本发布和修改说明阅读全文

posted @ 2009-12-14 15:05 eaglet 阅读(1145) | 评论 (7) 编辑 |

摘要: Hubble.net 从开发到现在整整一年时间,今天第一个测试版本终于可以发布了,也算是对我这一年来的努力的回报吧。Hubble.net 在开发过程中得到了很多园友的关注和支持,在此表示感谢,也希望大家继续关注和支持这个开源项目。 阅读全文

posted @ 2009-11-30 15:14 eaglet 阅读(958) | 评论 (18) 编辑 |

摘要: Hubble.net 安装指南阅读全文

posted @ 2009-11-30 14:47 eaglet 阅读(11596) | 评论 (62) 编辑 |

摘要: Hubble.net 0.6 版本生成阅读全文

posted @ 2009-10-19 15:05 eaglet 阅读(579) | 评论 (6) 编辑 |

摘要: 该版本完成了 create table drop table 表级别锁 系统存储过程 优化了大量插入时的内存管理阅读全文

posted @ 2009-09-29 10:21 eaglet 阅读(528) | 评论 (3) 编辑 |

摘要: Hubble.net 建表语句 Create Table阅读全文

posted @ 2009-09-15 15:21 eaglet 阅读(1503) | 评论 (6) 编辑 |

摘要: 0.4 版本完成了如下功能 1. TSFQL 脚本解释器框架 2. Insert, update, delete 和 select 语句。 3. 对批命令的支持阅读全文

posted @ 2009-09-01 15:54 eaglet 阅读(887) | 评论 (8) 编辑 |

摘要: 今天是Hubble.net 值得纪念的一天,从开始规划Hubble.net 到今天已经8个多月,从0.1到0.2再到0.3再到0.4,每个版本都是一个故事,这期间不知道到解决了多少难题也不知道度过了多少个不眠之夜。多少次我一个人走在林荫道上考虑着一个又一个算法,多少次我看不到希望想放弃,但最后还是咬牙坚持。没有人和我讨论和交流,我就这样一个人寂寞的走着走着,看不到任何可见的成果,但我始终坚信,我有能力走下去,有能力看到我想要的东西。路很长,但只要坚持不懈,路再长也只是时间问题。 阅读全文

posted @ 2009-07-30 20:40 eaglet 阅读(1777) | 评论 (19) 编辑 |

摘要: Hubble.net 0.3 版本发布阅读全文

posted @ 2009-07-01 10:24 eaglet 阅读(1547) | 评论 (12) 编辑 |

摘要: Hubble.net V0.2 版本历时将近半年时间,终于全部结束,期间走了一些弯路,耽误了一些时间。 阅读全文

posted @ 2009-05-27 09:39 eaglet 阅读(802) | 评论 (12) 编辑 |

摘要: Hubble.net 持久化方面3个重大改进 1.持久的DocId 2. 元数据快速修改 3. 高效的增量索引阅读全文

posted @ 2009-04-28 11:18 eaglet 阅读(671) | 评论 (7) 编辑 |

摘要: T-SFQL (Transact-Structured Full-text Query Language) 是在T-SQL 标准基础上衍生出来的结构化全文查询语言。2009年由Hubble.net 提出,语言全文数据库的查询和管理。 T-SFQL 0.1 版本为T-SFQL 语言推出的第一个版本。该版本只提供基本的“增删改查”功能。其他功能将逐渐在后续版本中提供。 阅读全文

posted @ 2009-04-27 18:37 eaglet 阅读(962) | 评论 (12) 编辑 |

摘要: HubbleDotNet 近期版本规划阅读全文

posted @ 2008-12-04 12:29 eaglet 阅读(2824) | 评论 (18) 编辑 |

摘要: 经过3周的开发,Hubble.Net 0.1 版本已经完成。这个版本不是一个可以商业应用的版本,准确的说其只完成了一些最核心的算法。发布这个版本的目的是为那些对搜索算法感兴趣的朋友们提供一个最单纯的版本,方便这些朋友们进行研究和测试。目前这个版本的运行效率和准确度已经比较高,不过我还是希望高手们能够提出更好的算法改进,以提高性能或准确度。阅读全文

posted @ 2008-12-02 14:38 eaglet 阅读(4139) | 评论 (28) 编辑 |

摘要: 今天在阅读LingWay (一个做垂直的语义搜索引擎)的CTO Cedric Champeau 先生的博客是发现有一篇题为:Why lucene isn't that good 为什么Lucene并不是想象的那么棒 的文章:Champeau 开门见山指出了Lucene的6大不足之处,鉴于 Lingway 公司使用Lucene已有好几年的历史,我相信Cedric Champeau的对Lucene的评论还是值得一读。阅读全文

posted @ 2008-11-24 07:35 eaglet 阅读(3612) | 评论 (8) 编辑 |

摘要: Hubble.Net 全文数据库开源项目是一个建立在 .net 框架基础上的由中国程序员主导的全文数据检索开源项目。项目旨在为全文检索开发者或用户提供一个简单易用、高性能、高可用性的全文数据库中间件。Hubble.Net的骨干版本提供最基本的全文检索接口和界面,并被设计为高度可扩展的系统架构,以吸引众多的开发者参与进系统扩展功能的研发和推广,最终形成一套较为完整的全文检索解决方案。阅读全文

posted @ 2008-10-28 09:09 eaglet 阅读(5030) | 评论 (38) 编辑 |