全文检索技术概述

全文检索技术概述

--sunfruit

        最近 做了一个资料管理软件用来管理日常资料,编写好了基本功能以后总是感觉这个软件缺少了什么,是的,是全文检索,没有全文检索功能,这个管理软件用到最后也一定对于查找资料相当困难,于是加紧赶工加上了作为基本功能的全文检索。
        有人了解检索技术,而且也不是什么高深技术,我也不班门弄斧,就是把原理大概介绍一下,感兴趣的朋友也可以自己尝试编写一下。
        全文检索技术其实就是用空间换时间--用硬盘空间换取检索时间。
        首先需要字索引,要想建立字索引就需要字库,这个字库其实就是每一个汉字,大概6000个汉字左右吧,再加上a-z,A-Z,0-9,基本上就可以作为字索引的字库了,然后就是利用字库生成字索引。
        生成字索引的原来就是以字库为基础,为字库里面的每一个字做索引,在每一个文章里面做匹配,把一个文章里面所有的匹配的位置记录下来,举个例子:比如字库里面的"啊",如果现在要建立"啊"的索引,那么要遍历所有要做索引的文章,把所有的"啊"的位置要记录下来,当然要可以区分位置是哪个文章的,要不然混成一堆,就没有意义了[因为最后检索索引的最终目的是要定位出文章的ID],这样就形成了字索引。依此类推,所有汉字的字索引,索引建立就完成了
        检索索引,这个是关键的关键,速度是否快,全看这里,当然索引建立的合理与否也能影响检索速度,举个例子:比如要查询"业务"这个关键词,
        首先在字索引中查到"业": 在文件号11111 中的位置有11,40,99  在文件号11112 中的位置有22,33,45
         然后在字索引中查到"务": 在文件号11111 中的位置有12,66,100  在文件号11112 中的位置有27,39,60

        经过计算会得到命中的文件号为 11111 ,因为业务必须位置号码要连续的出现才算命中

        大概的思路就是这样
       当然检索技术还会有词索引技术,根据字索引可以进一步生成词索引,并且有切词技术。。。就不多说了
       
        那个资料管理软件的DEMO下载地址 http://www.blogjava.net/sunfruit/archive/2006/04/01/38625.html
        DEMO的界面样式如下
        检索界面
         Shell00.jpg
        主界面
         Shell01.jpg

        注意:使用全文检索的时候,首先要生成索引[在工具菜单栏里面],并且不能重复生成同一个文章的索引,而只能重新生成,这个在生成的时候有选项,因为如果重复生成那么在字索引里面就会重复记录,到时候检索的时候就会检索出来多个同样的文章了

你可能感兴趣的:(全文检索技术概述)