实现“零等待”全文检索(99分)

  • 主题发起人 主题发起人 patlovecl
  • 开始时间 开始时间
P

patlovecl

Unregistered / Unconfirmed
GUEST, unregistred user!
我看到有些全文检索软件的广告说:检索一整张光盘只用几秒钟,
我实在想不出使用了什么技术,dir/s 还得十几秒呐。

memo字段不能建索引,用流实现不可能太快,到底是什么算法?
 
会不会使用了什么高深的广告技术?
 
http://www.TamarackA.com有针对delphi的全文检索引擎,可去看一看。
 
http://www.TamarackA.com有针对delphi的全文检索引擎,可去看一看。
 
如果不是广告技术, 那么该光盘格式是特殊的.
 
我认为可能是该软件对光盘进行预读,已在硬盘中保存了光盘的目录表。
再检索时自然就几秒了。
如果按照一般读盘技术来说,就算40速的光驱也无法保证一张光盘在数秒
内检索完。
有点象以前的100速光驱的基本原理。大家认为如何?
 
搜索方式可能有优化,B+树?
 
搜索方式是B*树,B+树的变种,首先对检索内容建立索引,分为两种:字索引、词索引,前者通用,后者速度快,当需要检索时,只是根据索引取出相应的数据显示,不需要匹配,故速度快,其技术高低主要是对索引库的压缩。我们现在利用索引技术进行地图的检索(GIS空间数据索引),TB级的数据也能在几秒内得到结果。
 
我做光盘对大量文件或文本的加载处理用的是:
启动时预先读入一个检索文件(当然是先做好的),不涉及具体内容就在内存处理索引
文件,仅显示说明,实际调用时才到光盘上读取。这是指对文本文件内容。

如果是指对目录中的文件名称的检索,硬盘当然快,光盘嘛,监视换盘信号,只要
有换盘信号,赶紧读盘(不会被用户发现的,只会认为是系统读盘而已)如果盘片
标号和容量和内建的某个记录相同,就不读盘了直接调记录,否则读光盘目录和容量
并建立记录(当然记录的名称和内容不能让用户读取,至少得稍稍处理,免得被发
现)
3H 说得很对,目录应该是预读取才行,全文检索,要用的时候再说吧,反正一次调
入600M 的文本,十秒钟完成也得 400倍速 的光驱,谁有?我出血买一个!
 
估计是把关键数据索引复制到硬盘,然后建立数据库,使用比较油画的算法如
A行之类的.
以前有个百速灌区,就是把所有的东西复制到HDD上
 
谁有 Rubicon控件的注册版?
快是快,但好象支持中文不好,据我估计它是基于洋文
字与字之间有空格设计的.
 
我看你要另题了.
 
整张光盘秒级检索,我不太同意这种说法,就是向100x光驱的那种做法
^^^^
COPY TO HDD 650M 啊,无论用什么检索办法,可能吗?除非整张光盘,数据
量小到一个合理的数量级,比如30M什么的,这样就有可能了。
 
惊动了genius大侠,一直懒惰,就是不想写字!
关于实现“零等待”全文检索,其实大家有一个误区(如同我刚接触全文检索一样,开始听他们说若在一篇巨大的文章中查找资料,若该文章中不出现该关键词,则检索时间为零,当时我怎么也不信)
1“零等待”是一个形象的说法,不是真正的0,只是对人的操作而言,几秒内有结果,应该为0吧;
2 全文检索,其实就是索引的建立,索引建立好后,检索是这样实现的:
给出关键词,在索引库中找到该位置,若索引库中无该关键词,
则查询结束(时间应该是0吧),若找到,取出位移值,移动文件
指针位置,显示文本内容,时间也应该为0吧;
3 索引并非一级,检索时,也并非一次读入内存,只是按索引读取,想
一想,咱们每日用的磁盘文件系统,是一个树,查找资料时,
不可能把硬盘内容或索引全读入内存吧;
4 全文检索是现在很成熟的技术,有一定的技术难点,GIS空间数据索引
更是如此,从产品的价格上,就能体会。





 
2000,能否告知地址?
我的mail : patlovecl@hotmail.com

(BTW:怎么在上述地址上作超连接?)
 
我原来作过一个全文检索的东西是这样的:
有一个文本,是某位作家的全集.要求输入任意的字词检索出他在文件中出现的 位置和次数.出现的位置有其他数据给出,只需要找到相对于文件靠头的偏移即可找到位置.我是这样实现的:
1 建立索引文件
首先遍力整个文件,找出文件中区委吗最大的汉字;然后建立一个练表(DELPHI的tList)以某个汉字的区委吗最为在练表中的下标,建立一个达的练表这个练表的美意向有是TList在这各练表中按顺序纪录这个汉字出现的绝对偏移量,然后保存这个文件
2 检索
举例 : 检索 大富翁
首先根据"大"的区委吗找到"大"的偏移两练表
取出第一次出现的偏移两;然后偏移两加1;到"富"的练表中检查是否是在这个位置上是有字如果有则继续加1找翁.没有则从下一个大的偏移两出发检索

这个方法海星,增经试验过一个文件时间还可以.文件不是很大.不止我说清楚了没有,如果大家有其他发能够发可以给我来信讨论
zhangxinjin@263.net
 
不知谁有汉语切词的算法没有?没有的话,如何做全文检索呢?
 
谁能找到Rubicon的crack?
 
哈哈哈哈,可找到一个我这笨蛋会答的问题
以前我做过一个检索图书馆图书索引的程序
也是光盘检索,和你说的差不多, 基本上可以做到几秒内检索的效率

那是一个PARADOX 库,有40万本书的内容简介,数据库索引就有80M大
库的实际大小大概在300M左右
当时实现的方法是,把库里的主要简短ID和关键词(书名)做在一个小表里
大库里放ID和 其他MEMO类的详细信息
要做到秒级检索, 需要在程序安装完后,把小库安装到硬盘里
查询的时候使用多线程查找技术
主线程负责查找,然后把找到的东西传给另一个显示用的线程
因为用户是一个DBGRID显示,所以用户在几秒内看到的东西时
另一个查询线程还在继续工作着,等用户浏览完这显示出的第一页
查询线程也把查找到的第2页的结果返回了。 呵呵,就如此

模糊查找可以用SQL 的LIKE % 的方法

但愿能帮助你,嘻嘻
 
坏人,为什么不早说,我琢磨了好长时间,不过现在也用几乎同样的方法解决了。
以后多回答问题,免得大家费神。
 
后退
顶部