天天看點

大資料量中的模糊查詢優化方案

----------------------------------------------------------------------------------------------

[版權申明:本文系作者原創,轉載請注明出處] 

作者:朱培      ID:sdksdk0     

--------------------------------------------------------------------------------------------

對工作單使用 like模糊查詢時,實際上 資料庫内部索引無法使用 ,需要逐條比較查詢内容,效率比較低在資料量很多情況下, 提供模糊查詢性能,我們可以使用lucene全文索引庫技術。本文示例是在SSH架構中進行使用。使用Hibernate Search (用來整合 Hibernate + Lucene),工作單搜尋功能。

1、首先可以在我們的maven工程中引入需要的jar包,

2、導入IKAnalyzer分詞器。因為IKAnalyzer在maven中沒有,是以我們需要手動下載下傳這個jar包,當然了,在http://mvnrepository.com/網站上面可以找到。

下載下傳好之後可以裝載到你自己的maven倉庫中或者直接放在你工程的lib目錄中,然後來引用:例如我的是在

3、在resource目錄中建立stopword.dic檔案,内容為:

4、建立一個IKAnalyzer.cfg.xml檔案,内容為:

5、在spring中進行配置:在配置SessionFactory中加入一行:當然了,這個時候需要自己去D盤目錄中建立一個檔案夾DBIndex

完整的如下:

6、在想要實作查詢功能的那個domain中添加注解:想要搜尋哪個字段就在哪個字段上面加上@Field注解,注意導入的是IKAnalyzer的分詞器,不是hibernate-search的分詞器。

分詞的效果如下:

使用 Luke 工具,查詢索引檔案内容 !  在cmd中運作  java  -jar   lukeall-3.5.0.jar,即可打開下圖這個頁面,檢視具體的索引資訊。

大資料量中的模糊查詢優化方案

7、在界面中添加搜尋框,我這裡使用的是easyui,so...

8、寫doSeach這個js函數

9、在action中接收頁面傳過來的name和value屬性的值,然後進行處理:

傳回值之後如何處理這裡我就不在說了。

10、在service中進行處理,經過service和serviceImpl之後,就會到達dao中,是以我們可以在dao中進行處理。

11、在頁面中檢視搜尋的效果

大資料量中的模糊查詢優化方案
大資料量中的模糊查詢優化方案

這樣我們整個開發流程就完成了。使用luence對大資料量中的模糊查詢是非常實用的功能,當然了,luence隻适用于站内搜尋,對于模糊查詢的支援還是非常好的。