全文檢索技術概述
--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.aygfsteel.com/sunfruit/archive/2006/04/01/38625.html
??????? DEMO的界面樣式如下
??????? 檢索界面
????????

??????? 主界面
????????

??????? 注意:使用全文檢索的時候,首先要生成索引[在工具菜單欄里面],并且不能重復生成同一個文章的索引,而只能重新生成,這個在生成的時候有選項,因為如果重復生成那么在字索引里面就會重復記錄,到時候檢索的時候就會檢索出來多個同樣的文章了
posted on 2006-04-05 00:20 sunfruit 閱讀(2551) 評論(2) 編輯 收藏 所屬分類: JAVA SE & EE