我需要对大量的文本文件进行关键词检索,其中有些文件比较大,有好几兆字节,需要检索的关键词有100个左右,我用VB编的程序,用instr函数来进行字符串的匹配,程序基本结构如下:'假如有1000个文件
'假如有100个关键词,存在数组strKeys()中
Dim i,j as integer
for i=1 to 1000
   ........
   '读文件到字符串变量strText中
   ........
   for j=1 to 100
       if instr(1,strText,strKeys(j),1)<>0 then
           '找到关键词
           Exit For
       else
           '没找到,继续
       end if
   next j
next i我知道这样的程序不好,系统的CPU占用率一直比较高,尤其是遇上一些比较大的文件时,CPU的占用率会达到100%,在Windows上已经不能进行其它操作了,是不是VB就根本不适合干这些事?

解决方案 »

  1.   

    pls help me.......................
      

  2.   

    在 循环中加上 doevents 语句试试就是这样:Dim i,j as integer
    for i=1 to 1000
       ........
       '读文件到字符串变量strText中
       ........
       for j=1 to 100
           if instr(1,strText,strKeys(j),1)<>0 then
               '找到关键词
               Exit For
           else
               '没找到,继续
           end if
        Doevents  
       next j
       Doevents  
    next i
      

  3.   

    效果不明显,主要是instr函数太费CPU了,尤其是遇到大文件时。
      

  4.   

    其实应该提高占用率,这样的话,也可以快点结束啊,呵呵。实在不行,用硬办法,Sleep函数强行中断程序0.003~0.004秒的样子,比DoEvents要明显得多。
      

  5.   

    其实我已经用了多线程技术,而且每搜索一个文件就让线程sleep几百毫秒,但效果还是不行,主要还是在instr函数,他的功能不错,但太费CPU,我机器的内存都加到1G,用的还是SICS盘阵列,还是经常象死机了一样。
      

  6.   

    问一下:我听人说过用哈希(HASH)算法进行关键词检索的,不知谁有这方面的例子或方案?我看了一下MD5的算法,128位地址,地址空间就是个天文数字,不知道用这中方法怎么实现关键词的检索?