十二月 21, 2006

好消息, 飞涛软件工作室,开始出售 ftfind 桌面搜索引擎的源代码,

超低震撼价格。

整体功能可与google desktop search媲美,内存占用不到其1/10。

欢迎有诚意的买家与我联系。

下载地址

http://www.18ie.com/find/download.php

该价格包含所有源代码,技术文档和相关资料。内含微型化的http 服务器,hash型文件数据库,中文分词模块,中文词汇表,doc文件解析模块,html文件解析模块,硬盘遍历模块,模版化界面。

是唯一带有中文分词的桌面搜索引擎!

中文分词模块采用了极为精巧的高效压缩和查询算法,4万余中文词汇库,只占用区区100多k的空间,在做技术积累的时候,我查询此算法的某个特别稀有的关键词时,google甚至在右边的广告位向我发出了招聘邀请。

源代码出售中…….

官方网站地址: http://www.18ie.com

飞涛桌面搜索引擎

1.创意说明

背景介绍
尽管从互联网上数以十亿计的文档中搜索信息已经变得相对简单,但在计算机的硬盘上查找一个Word文件仍然不是一件容易的事。

为了方便用户在越来越大硬盘里,从海量的资料中查找自己感兴趣的文档,我开发了本机搜索引擎,该软件能够以全文检索的方式,通过浏览器,让用户在自己的计算机的本地硬盘中,迅速找到Html网页、Word文档 、txt纯文本、或者c,cpp,pas,java,asp,php等程序的源代码文件。

撰写说明书的参考文献:

1)《软件工程》叶俊民 清华大学出版社 2006年

2) 《UML基础及Visio 建模》刘晓华 电子工业出版社 2004年

1.2 市场定位

相对网络搜索,桌面搜索的威力更大,市场更好。从技术来看,只有桌面搜索才算是全方位的搜索工具。它无所不能且方便快捷,从电脑到网络的每个角落都能找到你要找的东西。

日前,google, 微软,雅虎,百度等国际化大公司纷纷全力打造并推出了自己的桌面搜索软件,宣布进入桌面搜索市场。决心为之搏斗一番。

从市场发展来看,桌面搜索市场的发展潜力最大。尽管搜索市场竞争非常激烈,但这一市场的增长潜力被普遍看好。有关市场研究数据显示:中国的搜索引擎市场2003年达到了5.2亿元人民币,比2002年的2.3亿一年增长了127%,今后3年内还将每年增长60%至70%之间,而全球搜索引擎产业,3至5年后将有望达到70亿美元。事实上,各大搜索公司近来的业绩都在高速发展,百度最近的财报显示,其业绩已经上涨了两倍,雅虎的财报也在一路攀升,Google的业绩就更不用说了。

虽然桌面搜索市场,暂时还没有明显的赢利模式,但我们看到各大公司纷纷在桌面搜索市场,积极地进行战略布局。

在这大家都还没有赢利的看不见硝烟的战场上,对后来者而言,正是一个起步的绝好机会:能和巨人们站在同一起跑线上,进行同台竞技。

1.3 需求规格

1.3.1 一般性描述

本软件要提供的主要功能是:帮助用户在自己的计算机的本地硬盘中,迅速进行全文检索。

用户特征:

预期软件的主要用户为一般职员(主任/一般文职/业务/办事人员)、学生和专业人士。用户受到的教育水平较高,对计算机操作较为熟练。

限制与约束:

为了方便软件在网络上的传播,在设计时,需要尽量精减软件的尺寸:整个软件的安装包限制在1M字节之内。在一个安装包内,提供全文检索的完整功能,内含微型化的http 服务器,hash型文件数据库,中文分词模块,中文词汇表,doc解析模块,html解析模块,文件遍历模块,模版化人机界面等。

1.3.2 特殊需求

作品功能:

能够以全文检索的方式,通过浏览器,让用户在自己的计算机的本地硬盘中,迅速找到Html网页、Word文档 、txt纯文本、或者c,cpp,pas,java,asp,php等程序的源代码文件。

行为需求:

1)用户可以在自己的计算机中,进行全文检索。用户通过浏览器输入欲查询的关键词,软件进行中文分词和检索,以页面形式返回包含关键词的文件集合。

2)用户可以指定和添加要索引的范围,比如可以一次添加多个文件进行索引,可以添加某个目录,某个硬盘进行索引。软件可以按照用户的指定范围,自动遍历并索引该目录或该硬盘下所有的文件,及其子目录下的所有文件。

3)索引时,采用多线程技术,尽量降低对CPU和内存资源的消耗。当用户空闲时,(鼠标停止移动10秒后),软件才能进入索引状态。一旦用户移动鼠标,索引线程立即进入休眠状态。

性能需求:

1) 查询时,最长的响应时间:控制在800毫秒和1秒左右;平均响应时间:控制在200毫秒之内。

2)内存平均占用控制在4M-10M之间。

3)软件安装包的大小控制在1M之内,以方便下载。

4)倒排索引文件的占用随索引范围而变动,采用中文分词技术,以词汇为单位进行存储,以期减少对硬盘空间的消耗。

5)如果计算机死机或者突然断电后,软件重新启动时,应该具备自我修复功能,避免从头再次建立索引。

6)提供模版化人机界面,如果用户具备编写html的能力,可以灵活地自行修改查询结果的显示页面。

安全性需求:

只允许来自本地IP地址(127.0.0.1)的查询,拒绝来自局域网和互联网的其他IP地址的查询。

2.设计规格说明

2.1 背景介绍

2.1.1 作用范围

系统目标:设计一个轻量级的全文检索软件,可以让用户通过浏览器输入欲查询的关键词, 在用户自己的本地硬盘中,迅速查询并以页面形式返回:包含关键词的Html网页、Word文档 、txt纯文本、或者c,cpp,pas,java,asp,php等程序的源代码文件。

系统的运行环境

硬件环境:公知计算机。

软件环境:WINDONS 98/2000/XP操作系统。

人机界面:浏览器(比如ie, netscape,firefox等)

设计约束:

软件语言采用DELPHI和Vc 混合编程。使用Delphi 编写主程序ftfind.exe,包括http server、遍历模块和软件界面等模块。使用Vc编写动态连接库fullindex.dll, 包括全文检索和中文分词等模块,供主程序ftfind.exe调用。

2.1.2 文档

技术参考书:

《C++ 标准程序库》 侯捷/孟岩 华中科技大学出版社 2002年

《Delphi 4编程技术内幕》 Charlie Calvert 机械工业出版社 1999年

《Delphi 算法与数据结构》Julian Bucknall 中国电力出版社 2003年

《C++ 编程思想》Bruce Eckel 机械工业出版社 2003年

《编程珠玑》Jon Bentley 中国电力出版社 2004年

参考标准

Hypertext Transfer Protocol — HTTP/1.1 (RFC 2616)

Hypertext Markup Language - 2.0 (RFC 1866)

2.2 软件功能设计

系统划分为以下子系统:http 服务器,hash型文件数据库,中文分词模块,中文词汇表,doc解析模块,html解析模块,文件遍历模块,模版化人机界面。

2.3 软件逻辑设计

添加倒排索引文件的数据流图

查询句子的数据流图

 

添加索引的线程状态的控制流图

查询时的UML活动图

界面设计:

主程序的界面:

查询的输入界面:

显示返回结果

2.4 软件运行平台设计

开发平台:

Delphi 和 Visual C++

运行平台:

Windows XP, 2000,98。

2.5 部署与安装设计

运行安装包find.exe, 点击“下一步”。 安装完毕后,系统自动运行。

3.软件使用说明

3.1 系统安装说明

安装步骤:

运行安装包find.exe, 点击“下一步”。 安装完毕后,系统自动运行。

数据初始化过程:

第1次查询前,用户需要先指定索引的范围,比如输入c:\, 然后,软件会自动检测鼠标使用状态,如果鼠标停止移动10秒之上,索引模块就会开始工作,在用户指定的范围内建立索引文件。

3.2 系统使用说明

用户第1次运行本软件时,应该指定搜索范围,软件会在计算机空闲时,对指定范围内的文件进行分析并建立索引,以供用户日后快速进行全文检索。

索引建立完毕或者正在建立的过程中,用户可以用浏览器,输入关键字进行全文检索,比如输入“ 计算机 ”,软件会返回用户本机硬盘中包含该关键词的所有文件,高亮度标识该关键词,并以分页的html形式显示出来。

如果输入“ 计算机 电脑 ”, 软件会返回既包括“ 计算机 ”又包括“ 电脑 ”的文件。

如果输入“ 计算机 -电脑 ”, 软件会返回包括“ 计算机 ”但不包括“ 电脑 ”的文件。

3.3 疑难问题解答

>为什么第一次运行,什么文章也没有搜索到?

因为:需要用户先指定索引的范围,软件才开始工作,在该范围内建立索引文件。索引建立完毕后,用户才能进行检索。

>软件可以索引那些后缀的文件?

可以对网页文件(*.htm)、纯文本文件(*.txt)、word文件(*.doc)、和源代码 *.c,*.h,*.cpp,*.pas,*.asp,*.php,*.java 等文件建立索引。支持Gb2312,utf-8等编码方式。

>软件何时进入索引状态?

软件检测到用户停止使用鼠标10秒之后,自动进入索引状态;一但用户开始使用鼠标,软件立即暂停索引。

>是否需要安装word软件,才能检索doc文件?

本软件自带doc文件转换器,不用安装WORD软件,即可直接抽取并索引doc文档。

>用户是否可以自行修改查询的页面?

本软件采用灵活的模版化设计,稍具网页设计知识的用户,即可自行修改软件www目录下的搜索界面。

4.商业计划书

4.1 背景

尽管搜索市场竞争非常激烈,但这一市场的增长潜力被普遍看好。 有关市场研究数据显示:中国的搜索引擎市场2003年达到了5.2亿元人民币,比2002年的2.3亿一年增长了127%,今后3年内还将每年增长60%至70%之间,而全球搜索引擎产业,3至5年后将有望达到70亿美元。事实上,各大搜索公司近来的业绩都在高速发展,百度最近的财报显示,其业绩已经上涨了两倍,雅虎的财报也在一路攀升,Google的业绩就更不用说了。

从市场发展来看,桌面搜索市场的发展潜力最大。相对网络搜索,桌面搜索的威力更大。从技术来看,只有桌面搜索才算是全方位的搜索工具。它无所不能且方便快捷,从电脑到网络的每个角落都能找到你要找的东西。

虽然桌面搜索市场,暂时还没有明显的赢利模式,但我们看到各大公司纷纷在桌面搜索市场,积极地进行战略布局。

在这大家都还没有赢利的看不见硝烟的战场上,对后来者而言,正是一个起步的绝好机会:能和巨人们站在同一起跑线上,进行同台竞技。

4.2 创业思路

密切关注goolge在桌面搜索市场上的动向,在技术上步步紧追, 争取有所超越;在商业上,积极发现并模仿google desktop search未来可能出现的的赢利模式。

4.3 产品推广策略

推向市场的策略:

采用免费下载、免费使用的推广模式,通过在用户中建立良好的口碑,借助用户之间的传播,并积极在报刊杂志等传统媒体和网络媒体上,采用广告、博客、论坛、搜索引擎优化等多种方式,进行宣传推广。

为目标客户提供服务:

收集用户的需求,改善软件的结构,适应软件外部运行环境的发展变化,提高软件的可维护性和可靠性,为日后进一步改进软件打下基础,力争满足来自各方面用户的多种需求。

本文 doc格式 下载地址:

http://www.18ie.com/find/ftfind_doc.php

本软件可执行程序 下载地址

http://www.18ie.com/find/download.php

花了整整2个星期的时间,我才写完了这个文档。现在放在网络上,希望会给大家带来一些帮助:

1)对于初学者,会对桌面搜索引擎的内部结构有所了解。

2)给以后参加此类软件大赛的选手一个参考例子。截至现在2006-10-9日,朝鲜的原子弹都爆炸了,网络上还没有一个参赛的文挡可供下载。那就让我来做第1人吧 。

ftfind 桌面搜索引擎的设计文档 (1)
马飞涛 

坦白地说,我设计软件时,和很多程序员一样,也不爱写文档。

后来,发觉如果按软件工程要求,不爱写文档的程序员,就是不成熟的程序员,就是游击队,即使你编程技艺高超,也是山顶洞的史前野人。

看看按软件工程的要求,都需要写些什么呢?

一、可行性研究报告.dot
二、项目开发计划.dot
三、需求规格说明书.dot
四、概要设计说明书.dot
五、详细设计说明书.dot
六、用户操作手册.dot
七、测试计划.dot
八、测试分析报告.dot
九、开发进度月报.dot
十、项目开发总结报告.dot
十一、程序维护手册.dot
十二、软件问题报告.dot
十三、软件修改报告.dot
 

和做智能狂拼的刘定西聊过天,他观察到:程序员的输入法一般都不太好。比如我就是这样,英文打得飞快,中文输入时,得选来选去,速度就慢多了。

我觉得:如果按这些列表把文档都写下来,手还不写软?哪里还有时间和心情写程序?

所以不写也罢,我就心甘情愿地做了十多年的山顶洞的史前野人。

后来,在一个互联网业界的牛烘烘的公司里面作驱动程序的开发,发现新来一个大牛级的人物,也做开发,第1件事情,就是埋头写文档。惹得二牛们满脸羡慕之情,看:别人一来就写文档,真专业。

这才发现,写文档还有这种好处。

那个时候,正兴起敏捷开发,就特意号称不写文档。

真让我思想解放!!! 原来,不写文档的程序员也大有人在,不光是我呀,还有好多人都不爱写呀。

怪不得有 SourceForge.net: Doxygen 这种能够自动把注释抽取成文挡的软件。

上半年,我写了一个桌面搜索引擎,类似于google desktop search 。

下载地址:http://www.18ie.com/find/download.php

9月18号那天,把它递交到河南省青年软件大赛,看看能得第几名。

这种青年软件大赛,特别麻烦。说明文挡里需要一大堆软件的设计说明。我也想偷懒,在网络找一个现成的例子,可是没有发现。

却通过网络搜索发现一个小秘密,原来全国各省的这种大赛的要求是一样的,用了一个模子刻出来的说明书。可叹,中国无人呀。不知道是请那个老教授写的,然后就全国通用了。那个老教授是参考哪本书写的呢?我很想知道,但不得而知了。知道这本书的名称,对理解他所说的技术术语很重要,如果谁知道是哪本书,请告诉我呀。

河南省青年创新软件设计大赛参赛作品说明书 (参考目录) 1.创意说明 1.1 背景介绍 介绍作者设计软件的创意背景、定义、名词解释、参考文献。 1.2 市场定位 主要介绍作者参赛作品的适用对象、应用前景和市场展望,可以从技术发展、行业应用、个人经历的方面来阐述。 1.3 需求规格 1.3.1 一般性描述 作品与环境之间的关系、作品要提供的功能、用户特征、限制与约束等。 1.3.2 特殊需求 包括参赛作品功能、行为需求、性能需求、安全性需求、设计约束和其他。 1.4 总结 2.设计规格说明 2.1 背景介绍 2.1.1 作用范围 包括系统目标、系统环境定义(硬件、软件和人机界面等)、主要设计约束和限制等。 2.1.2 文档 包括应用的技术参考书、参考标准、采用的技术或技术路线说明,以及在本软件设计工程中采用的项目管理方法、措施和规范制定。 2.2 软件功能设计 包括软件结构的功能、系统子系统划分以及公共构件的设计。 2.3 软件逻辑设计 可采用面向对象或面向过程的设计法中,设计软件数据流和控制流的任何方法或工具完成(如Rational Rose中的状态图、活动图、User case等),要求包括如下内容: 数据流设计 数据库设计(如软件中不涉及数据库管理,可省略) 控制流设计 用户界面设计 2.4 软件运行平台设计 对软件的开发平台、运行平台和使用场景进行设计,包括系统运行的操作系统、数据库系统及其他支撑环境等。 2.5 部署与安装设计 对系统的安装、部署的要求和实现方法进行说明。 2.6 小结 3.软件使用说明 3.1 系统安装说明 描述重要的安装步骤、脚本参数配置和数据初始化过程。 3.2 系统使用说明 说明系统的使用方法,描述主要的功能实现流程。 3.3 疑难问题解答 4.商业计划书 4.1 背景 进行创业或成果转化的背景介绍,可结合软件来介绍毕业后的职业选择或人生定位。 4.2 创业思路 如果你想创建你自己的软件公司,结合你设计的软件产品介绍你可能组建一个什么样的公司(可包括合伙人及股份结构,公司初创规模、雇员 ……)。 4.3 产品推广策略 如何把设计出来的软件或软件提供的服务推向市场,并对你的目标客户提供服务

仔细阅读该本《软件工程》,尽量把老教授的术语和这本书上的术语套在一起。

(说的好听点是术语,说不好听,就是方言)。现在,我仍然把握不准“控制流设计”是个什么方言,

我买的那本《软件工程》里,对“控制流设计”几乎没有解释,在网络上能找到好几种说法,到底应该采信谁的?我想应该不是指软件的流程图,也不太象是状态转化图。谁知道确切含义,请给我留言呀。

花了整整2个星期的时间,才写完了这个文档。现在放在网络上,希望会给大家带来一些帮助: 

1)对于初学者,会对桌面搜索引擎的内部结构有所了解。

2)给以后参加此类软件大赛的选手一个参考例子。截至现在2006-10-9日,朝鲜的原子弹都爆炸了,网络上还没有一个参赛的文档可供下载。那就让我来做第1人吧 。

下载地址:

参赛文档 doc格式 下载地址:

http://www.18ie.com/find/ftfind_doc.php

参赛文档的网页格式:

http://www.18ie.com/wordpress/?p=43 

本软件可执行程序 下载地址

http://www.18ie.com/find/download.php

 

再发几句戏言,以乐读者:

1)从来不写文档的程序员,是山顶洞人。(我当过10多年呢)

2)按照软件工程的要求写文档的程序员,是公元前人。

3)遵循敏捷开发的程序员,是公元后人。也许2,3的顺序有争议。

4)用数码相机,摄像机,扫描仪,录音笔、带摄像头的手机,纪录数码文档的程序员,是新人类。如果能有个PLMM把纪录下的视频、照片,录音带,MP3,AVI整理成软件工程要求的文挡,那就是新新人类了。

马飞涛
 

ftfind 对比 google 桌面搜索

我写完本机搜索引擎 ftfind 之后,下载了一个最新版的google desktop search。 做一个对比,立即找到了信心,可以欣喜地看到,在有些方面,ftfind已经暂时胜出。

虽然有些细节没有google考虑周全,但是整体水平已经很接近,处在同一个重量级。

测试平台:一台 奔三 750台式机,win xp操作系统。 

Google desktop search 的最新版本:4.2006.0814.1947-zh-CN-pb,
安装文件:GoogleDesktopSetup.exe , 大小:2311KB。

ftfind的最新版本:V1.1,
安装文件:find.exe, 大小:755KB。

结论:ftfind 比goolge的安装文件小,ftfind 暂时胜出(755k vs 2311k)(估计随着日后功能的增多,也许安装包会增大,但那是以后的事情了。我会力争保持在google的一半之内。)

/***** 资源占用对比 *****/

用任务管理器做了一个截图,分析对比:

 

对比

 

 

 

 

 

 

 

ftfind 由1个进程构成,高峰内存使用:7472K

可以看到google desktop search 由最少5个进程构成,高峰内存使用:19652K +4704K +18128K +2344K +12352k=57180K。

虽然google的5个进程的高峰内存,加起来不会同时达到57180K这个最大值,但和ftfind的1个进程的高峰内存7472K相比,结论很明显:ftfind的内存占用很少,远远胜出google的desktop search(7427K vs 57180k) 。

再比较线程数,句柄数,user 对象,gdi 对象,得出同样的结论:ftfind的资源占用,远小于google desktop search。

/***** 一个工作日后,索引数量的对比 *****/

同时安装google desktop search和 ftfind,一个工作日结束后,观察索引文件的数量。

因为google 默认情况下,将对所有固定驱动器编制索引,所以保持默认的设置不变。

而ftfind设计时,首先考虑要尊重用户的隐私,所以需要用户人工添加盘符,我指定了c盘和d盘。

google的默认设置

 google setup

ftfind的初始设置

 ftfind setup

然后,同时运行这2个软件。该上网就上网,该聊天就聊天,中午和下午休息的时候,让计算机开着,处于空闲状态,好让这2个桌面搜索引擎,有时间去建立索引。晚上,再看这2个软件,索引已经建立完毕。

google索引了329个项目

google desktop search file counts

ftfind索引了3395个文件

ftfind index file counts 

莫名其妙,ftfind 在规定时间内(1个白天)索引的数量上, 居然又赢了。

索引的数量,其实没有技术含量,而且google索引的文件种类,也比我的ftfind多了很多种类。我还要继续努力呀。

google desktop search 不应该才索引这么少的文件呀?我也奇怪,莫非是哪个默认设置搞错了?

/***** 搜索速度的对比 *****/

google 在329个项目里,搜索 “网页”这个词,得到25个结果。打开第1页, 用时0.1秒

google speed

google 在329个项目里,搜索 “网页”这个词,得到25个结果。打开第2页,用时0.36秒

google speed

google 在329个项目里,搜索 “网页”这个词,得到25个结果。打开第3页,用时0.17秒

google speed 

测试结论:google desktop search 在329个项目里,搜索 “网页”这个词, 得到25个结果,打开3个搜索页面,平均速度:用时(0.10秒 +0.36秒 +0.17秒) /3=0.21 秒。

下面再看一下ftfind的搜索截图:

ftfind 在3555个项目里,搜索 “网页”这个词,得到255个结果。打开第1页,用时0.15秒

ftfind speed

ftfind 在3555个项目里,搜索 “网页”这个词,得到255个结果。打开第2页,用时0.24秒

ftfind speed

ftfind 在3555个项目里,搜索 “网页”这个词,得到255个结果。打开第3页,用时0.13秒

ftfind speed

测试结论:ftfind 在3555个项目里,搜索 “网页”这个词, 得到255个结果,打开3个搜索页面,平均速度:用时(0.15秒 +0.24秒 +0.13秒) /3=0.17 秒。

结论:ftfind 搜索速度比 google desktop search 的搜索速度稍快。 (0.17秒 vs 0.21秒)

/****** 搜索结果的数目对比 ******/

ftfind 在1天之内,索引的文件多,一共索引了3555个文件。而google desktop search,索引的文件少,一共索引了329个项目,所以搜索结果比ftfind少,也就很正常了。

google 找到25个“网页”

google search file count 

ftfind 找到255个“网页”

ftfind search file count 

结论:

  1. ftfind 比goolge 的桌面搜索(desktop search)的安装文件小(755k vs 2311k)
  2. ftfind 只有1个进程;而google 的桌面搜索,需要5个进程
  3. ftfind对内存占用很少,远远胜出google的桌面搜索(7427k vs 57180k)
  4. ftfind 搜索速度比 google 桌面搜索的速度稍快。 (0.17秒 vs 0.21秒)

后记:

通过这次测试,我看到ftfind在许多细节还有很多不足,但ftfind 暂时在速度、资源占用、软件大小等方面也胜过google desktop search一筹, 这给了我与巨人同台共舞的信心。

google 是一个非常伟大的,值得我非常敬重的公司;我写ftfind 这个桌面搜索引擎的时候,就得益于google找到了很多有关的技术资料。甚至在我搜索某个技术关键词的时候,还在右侧看到了google想招聘我的广告,真是精确定位呀。

google 改变了人类的生活和工作方式。

这也是我的理想。

马飞涛