支持全文检索的大富翁浏览器
不知道现在是否还有人在用离线浏览器,不过即使没人用也没关系,这个程序更多的是演示如何使用混合语言进行开发。
改版本是在“孟亚永"的离线浏览器基础上进行修改的,MYY的版本又是修改的左大侠的版本的。 主要增加了全文索引功能(只支持问题)。 加了全文索引的是主窗口上的快速搜索,将对所有帖子进行搜索(不包括回复)。 本希望做成支持对回复也进行全文索引的,但这个数据库有些问题,离线浏览器部分不太好改。
数据库的修改 这个离线浏览器使用的数据库格式和newsmile的数据库有些不太一样,因此在使用前还得先动点手术。 先执行 Select ID, DateTime, UserFrom, Content, Parent into LettersReply from letters where Parent<>0 生成回复表,然后在letters中删除回复信息 delete from letters where Parent<>0 再就是将letters的表名修改为lettersQ 数据库的修改到这里就已经完成了,不过结果这些操作后数据库的个头大了不少,最好使用Access的压缩功能,压缩下。 数据库修改后,还需要先建立索引,不然全文索引就无法工作,在bin目录下有个make_index.bat,直接运行这个脚本进行索引的创建。建立索引需要花点时间,我对2007的数据建立索引好像花了近10分钟。
JAVA部分 由于全文索引用的是java的lucene,因此需要机器需要安装JDK。 java部分全文索引的代码里面也带了。 由于用到lucene,如果需要编译需要去下载个lucene(http://lucene.apache.org/java/docs/)。
关于全文索引 目前不少开发语言都有全文索引的支持。Delphi也有个,不过很怨念的是需要.NET的支持。 虽然没有支持native的delphi全文索引库,但还是有些办法给native的delphi增加全文索引的支持的。 比较容易做的方法有,将C++版本的全文索引库封成activex或DLL,不过我的C++不灵光,所以pass。 python可以将类直接导出成activex,导出的方法简单。此外网上已经有人这么做了(doindex?)。但我测试pylucene的时候,中文索引通过不了。而且python导出的com需要启动一个com server,所以也pass。 剩下最简单,最容易处理的方法就是将将全文索引部分写成一个单独的程序。在delphi里直接对这个程序进行调用,并通过获取控制台信息的方式,同索引服务器进行交互。目前采用的就是这个方式。
关于JAVA的个头 自从MS和SUN翻脸后,windows就不到jre了。要用户去安装一个1xM的JAVA虚拟机实在是一些让人为难。不过JRE还是可以精简到可以忍受的大小的。JRE1.5的虚拟机用7Zip压缩后大小为6xxK。库部分只对需要的部分打包,应当可以将JRE大小控制在2M内(我本来想精简下,不过今天是没时间了)。 by vicalloy |