1.Lucene

全文檢索?Lucene?

在我們開發項目的過程中,我們往往會使用模糊搜索這個功能,比如說:

我們數據庫中存儲有 ”商品名稱“ 這個字段,我們需要對其進行模糊搜索。

在項目前期我們直接在數據庫中使用 like 語句進行模糊搜索,然後項目運行一段時間,新增了大量的商品,數據量增加到上百萬的數據,這時只要搜索需要很長時間才能響應。

出現這個原因是在模糊搜索上,因爲普通的數據庫模糊搜索根本做不了索引,用戶每次搜索都進行全表掃描查詢,速度當然慢。

這時候我想起淘寶京東,他們的商品數量應該不止百萬,那他們是怎麼做到秒搜的呢?

這時候我們就可以在網上查詢一下,大家都在說搜索引擎,什麼 elasticsearch Solr 這些搜索引擎,支持PB級數據,感覺好牛氣。但是他們都有個問題,那就是他們是單獨的服務。

如果我們想開發個單機版的應用,這時我們就要安裝這些額外的軟件,這個就有點麻煩了。

經過進一步的瞭解,我知道了這些搜索引擎基本上都是基於 Lucene 開發的,而且 Lucene 只是一個工具包,不需要額外的服務,這就是我們需要的。

基本上使用 Lucene 的話,上面我們有的問題都沒了,上面單機版的應用這些都沒問題。

我們該如何選擇?

在上面我的描述中,我們基本確定了該如何選擇;

  1. 在我們大型分佈式的應用,我們應該使用 elasticsearch 、Solr 這些產品。
  2. 在單機小項目中,比如:個人博客、知識庫等等數據量不太大的情況下用 Lucene 。

現有的項目要怎麼使用?

假如我們現在已經在運行的項目,我們想用 Lucene 或者 elasticsearch 、Solr 這些來做搜索,可以嗎?

這當然是可以的,我們只要把數據通過 Lucene 或者 elasticsearch 、Solr 這些來處理一下,以後的搜索全部走他們就可以了,至於添加修改這些還是操作原來的表。

比如說我有個博客網站,我想使用 Lucene 來進行全文搜索,這時我只要把之前的文章使用 Lucene 來創建索引,然後把搜索的接口改成使用 Lucene 來搜索,以後添加的文章我就把數據放到 Lucene 中,這樣就可以了。

學習資源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章