如何利用CHM文件为硬盘上许多不同格式的文档建立全文索引(用c++builder编程,我总共只有72分,大家帮忙)(72分)

  • 主题发起人 happymanfreeman
  • 开始时间
H

happymanfreeman

Unregistered / Unconfirmed
GUEST, unregistred user!
我想开发一个文档管理器,他的功能大致如下:<br><br> &nbsp;1. 程序的左边是文件的treeview型组织,右边是文件的显示。<br><br> &nbsp;2. 程序能在相同的界面位置显示多种类型的文档,如doc, xls, txt, dpf等。<br><br> &nbsp;3. 程序具有全文搜索(需要全文索引)功能。<br> &nbsp;<br> &nbsp;其中第3个问题一直迟迟无法解决,如何为硬盘上的许多文件建立全文索引,有关c++builder的google desktop API 资料找不到,请教许多高手也不懂,无奈只好试试利用<br>CHM文件为硬盘上的文档建立全文索引。众所周知,许多软件如网文快捕,集文快手等,<br>都具有全文搜索(需要全文索引)功能, 它们具体如何编程实现? &nbsp;这些软件都只支持html,如何编程才能把硬盘上的许多文档转化为html文档并生成CHM文件,并且利用这个CHM文件为原来硬盘上的文档建立全文索引,也就是说,输入一个或多个关键词能搜索到硬盘上的目标文档,注意! 这里搜索到的不是指转化过来的html文档,而是指原来硬盘上的文档!!只是利用一下这个CHM文件建立全文索引罢了(以上都指用c++builder编程)<br> &nbsp;<br> &nbsp;另,用数据库不行! 这个方面我已经考虑了很长时间了!因为我打算开发的是收费共享软件,要求数据库有支持中文,英文及其他各种语言的全文索引功能,并且要求数据库是免费的,MYsql支持全文索引功能,但其中文的全文索引功能很差,并且不是免费,sqlserver支持全文索引功能,不是免费且价格昂贵! interbase,firbird是免费的,但无全文索引功能,其他数据库我都考虑过了,都没有符合我的要求!!如果无全文索引功能,当文档很多时,如数十万,全文查询时则耗费很大内存,速度也很慢了!!如都是大文档时情况更严重!!<br> &nbsp; <br> &nbsp; &nbsp;以上请教大家,谢谢!!
 
要支持各种文字的话,估计就要用SQLserver,它有ntext类型.
 
这个问题不是一下子可以回复的。<br> doc文档转换html<br> txt转换html<br> dbf转换html等等,都需要相应的算法实现,对于doc转换有现成的例子,dbf转换,看看开发商提供了html的com没,这些都要写相应的dll,<br> 至于html转换成chm,很简单,调用chm的dll实现即可。<br><br> 至于全文检索,实现方法多样,比如对转换成chm中的检索,这个要看chm格式部分,网络上有关于反编译chm格式代码,研究一下就可以明白如何检索全文。<br> 如果是以chm中反过来检索原文所在位置,比较复杂,各个文档格式不一样,需要写相应的检索算法,但是有些文档格式是很难查到格式的,建议看开发商提供com接口否。<br> 当然可以通过变通方法查询chm中所在位置用文字提示原格式文件所在行列。不过这样查询量大时难以处理。
 
你的难点是全文检索,你可以在网上查一下全文检索的开源系统,<br>在www.sorceforge.net上查查吧,有不少的
 
易云飞先生:<br> &nbsp; 你说得有道理, 你能否给出或介绍一个示例代码??
 
我手头上没有源码,不过你可以到google上搜,比如<br> &nbsp;doc文档转换html 源码, 会发现一大堆的技术细节实现部分。<br> &nbsp; &nbsp;http://www.aspxboy.com/private/207/default.aspx<br> &nbsp;dbf转换chm的<br> &nbsp; http://www.comicer.com/stronghorse/software/html/uncompile.htm<br> &nbsp;如反编译chm方面的,<br> &nbsp; &nbsp;http://microdream.cnblogs.com/archive/2005/10/16/255724.html<br><br> &nbsp;你可以把一个大的问题分解成各个技术细节部分,然后通过网络资源查到后分解它们如何实现的,你的工作不过就是综合而已。<br> &nbsp;还有不要局限于要搜寻什么语言的样本,现在只要是代码都可以值得借鉴。<br> &nbsp;这个我想不是难事吧。
 
易云飞先生:<br> &nbsp; 看了你介绍的,我还是不明白。我的意思是,象网文快捕那样,如何用代码新建一个空的chm文件或hlp文件,然后从硬盘上导入一个或多个文档(txt,doc,pdf,xls,html等格式)<br>集成到chm文件或hlp文件中,用treeview组件显示,能全文搜索(注意! 这里用treeview组件显示的,搜索到的不是指转化过来的html文档,而是指原来硬盘上的文档!!)
 
你先转换成通过html格式做全文检索后,(比较容易,得到某篇文章有关键字)<br> &nbsp;然后再具体对那一篇html文章对应格式文件再做检索,(设置html文件对应一原文档,用数组即可实现,当你在html找到后,就可以相应找到原文档路径,位置)<br> 再对某个格式文件做全文检索,如果是txt,直接把html格式所在行列位置作为定位即可。<br> 对应word,可以通过操丛word控件(vc,delphi,vb中导出),通过在oleedit来实现(没代码?看看那些语言中的demo吧),<br> pdf,更是提供了com控件,查查在com中提供了查找函数没,一般来说应该有的。
 
易云飞先生:<br> &nbsp; &nbsp; 你的想法与我相似,先转换成html格式做成chm,并通过chm做全文检索后,得到哪一篇或哪几篇文章有关键字,也就是找到了这些文章的标题(或ID号),然后通过原先设定<br>的数组找到对应的原文档路径。<br> &nbsp; &nbsp; 但是,具体如何编程呢?<br> &nbsp; &nbsp; 1. 如何用代码新建一个空的chm文件?<br> &nbsp; &nbsp; 2. 从硬盘上导入一个或多个文档(txt,doc,pdf,xls,html等格式)集成到原先的chm<br> &nbsp; &nbsp; &nbsp; &nbsp;文件中,用treeview组件显示呢? &nbsp;如何用代码实现?<br> &nbsp; &nbsp; 3. 打开一个chm文件进行全文搜索,如何用代码实现?<br> &nbsp; &nbsp; 4. 需要访问 Html Help Workshop 的API或对象库?<br> &nbsp; &nbsp; 5. 哪里有针对性的示例代码? 有没有这方面的书啊?<br> &nbsp; &nbsp; 6. hlp,chm,哪一个更适合我的要求?
 
顶部