[同事原创] 开源搜索引擎Hyper Estraier性能小测&缺点总结

本文测评了HyperEstraier搜索引擎的性能,针对74GB的网页数据建立索引耗时72小时,最终索引文件大小约为19GB。查询速度达到亚秒级,但排序和相似度计算较慢。此外,还指出了该软件缺乏社区支持、文档不全等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

开源搜索引擎Hyper Estraier性能小测&缺点总结
      作者:chin

 


Hyper Estraier是一个由日本人用C写的搜索引擎,底层存储采用了作者另外一个 开源项目QDBM。
在功能特性上,Hyper Estraier是比较接近iSearch (alibaba内部平台搜索产品) 的,支持Attribue Search,N- gram,P2P(不是下片的P2P啊,就是可以有很多节点,节点之间可以通信),甚至 支持正则。。。BT的说。

六月份的时候我用Larbin抓取了数百万网页,build了索引,做了一下性能测试, 测试数据简单总结如下:
一、html页面数共74,329M,约74G
[chin@lily ~]$ tail -n 3 nohup.out
96      save/d00330
106     save/d00814
74329   save/


二、build完之后,索引文件约19G,加上其他数据一共约26G
1096    ./_attr
19044   ./_idx
5727    ./_text
2       ./_kwd


三、build非常耗时,这点数据量,估计花了72小时才build完,我没准确计时,但 感觉脚本运行了三天才跑完,服务器load average 2左右,不build索引的时候 load average在0.05左右,我用的是这个shell:

for ((DIR=001;DIR<1000;DIR++))
do
   echo "Now gathering html in d00"$DIR
   rm tmp_index -rf
   find "/usr/local/larbin/save/d00"$DIR -type f | estcmd gather -fh -cl tmp_index - > /dev/null
   estcmd merge chn_html tmp_index > /dev/null
done


红色部分是关键,不知道“find命令查找html文件”是不是瓶颈,用he索引php和 mysql的html手册还是挺快的。

四、查询速度是亚秒级的,似乎有缓存,排序慢,计算相似度(similar page)很 慢,猜测是build索引的时候干的活儿少,所以查询的时候很多东西要临时计算
[chin@lily he]$ estcmd search -max 1 chn_html "yahoo ncp"
--------[38B113D56972756D]--------
VERSION 1.0
NODE    local
HIT     6
HINT#1  yahoo ncp       6
TIME    0.663100
DOCNUM  2514538
WORDNUM 17904280
VIEW    ID
本次搜索关键词是“yahoo ncp”,在251万个文档中命中6个,耗时663毫秒

[chin@lily he]$ estcmd search -max 1 chn_html "yahoo"
--------[6C8156340E89C849]--------
VERSION 1.0
NODE    local
HIT     59707
HINT#1  yahoo   59707
TIME    0.051943
DOCNUM  2514538
WORDNUM 17904280
VIEW    ID
[chin@lily he]$ estcmd search -max 1 chn_html "ncp"
--------[5B1ED19D1C5AB56C]--------
VERSION 1.0
NODE    local
HIT     1362
HINT#1  ncp     1362
TIME    0.003320
DOCNUM  2514538
WORDNUM 17904280
VIEW    ID

第二次搜yahoo或ncp就快很多了,因此我猜是有缓存的

HE的缺点:
1.没有像样的社区。
作者很猛很持久,搞了一系列开源项目,但似乎没有人跟他一起开发。有人贡献其 他语言的API,比如PHP的api就是。

2.文档简单但不详尽。
看得出来,这个日本哥们的英文也不咋地,对我们这种非英语母语的人来说是个好 事,文档很容易阅读,不过实施的时候有写细节需要连猜带蒙。文档里甚至有些错误。

3.某些功能特性缺失,比如stop word,同根词,group by(看http: //fuwu.cn.yahoo.com,随便搜个关键词,它会告诉你各个分类下有多少满足条件 的结果)。也没有分词,不过分词可以独立出来,也容易改他的源代码重编译。

4.代码结构一般。
C代码,流程控制比较扁平(充斥大量if,else),感觉没什么封装,也谈不上什么 设计模式。坏处是代码复用不够,会有些冗余,给hack带来一些困难。好处是比较 容易看明白,无需借助SourceInsight之类的东东。

另外,我在这里搭了个PHP,MySQL手册的搜索:http://www.example.com.cn/ 可以去体验一下。


XRL的回复:
根据我阅读部分代码的结果,并不推荐大家用它做实际开发
小改一下还行,但是其结构实在太.....适于一两个高手埋头猛搞,不适合拿到一个公司、团队做为项目进行


YYQ的补充:
如果是采用在内存中构建“搜索词 文档ID列表”,然后把用户输入的词分开去一一对应,最后再根据文档ID(也可能是偏移量)去大的索引文件里面去查找,性能应该比这个至少快1个数量级(而且是不用任何缓存机制的前提下)。
不知道Hyper Estraier是怎么实现的,但是从结果上来看性能不好。


原文地址:http://chin.bokee.com/6784704.html

 

相关说明:
官方网站:http://hyperestraier.sourceforge.net
中文教程:http://www.162cm.com/archives/tag/hyperestraier

 

 

PS:
Hyper Estraier 的作者Mikio Hirabayashi是个强人,做了很多开源项目,包括QDBMTokyo CabinetDiqtRBBS 等,最近据说Tokyo Cabinet风头很劲

 


 

 

 1.Hyper Estraier是一个用C语言开发的全文检索引擎,他是由一位日本人开发的.工程注册在sourceforge.net(http://hyperestraier.sourceforge.net). 2.Hyper的特性: 高速度,高稳定性,高可扩展性&hellip;(这可都是有原因的,不是瞎吹) P2P架构(可译为端到端的,不是咱们下大片用的p2p) 自带Web Crawler 文档权重排序 良好的多字节支持(想一想,它是由日本人开发的&hellip;.) 简单实用的API(我看了一遍,真是个个都实用,我能看懂的,也就算简单了) 短语,正则表达式搜索(这个有点过了,不带这个,不是好的Full text Search Engine?) 结构化文档搜索能力(大概就是指可以自行给文档加上一堆属性并搜索这些属性吧?这个我没有实验) Hyper Estraier is a full-text search system. You can search lots of documents for some documents including specified words. If you run a web site, it is useful as your own search engine for pages in your site. Also, it is useful as search utilities of mail boxes and file servers. The characteristic of Hyper Estraier is the following. High performance of search High scalability of target documents Perfect recall ratio by N-gram method High precision by hybrid mechanism of N-gram and morphological analyzer Phrase search, regular expressions, attribute search, and similarity search Multilingualism with Unicode Independent of file format and repository Intelligent web crawler Simple and powerful API Supporting P2P architecture Hyper Estraier is an open-source software released under the terms of the GNU Lesser General Public License. It works on Linux, Windows, Mac OS X, and other UNIX-like systems.
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值