1. 程式人生 > >Lucene(一):資料庫搜尋弊端以及全文搜尋的概念

Lucene(一):資料庫搜尋弊端以及全文搜尋的概念

生活中的搜尋

相關的搜尋實際上無處不在,比如百度的搜尋,Ecplise中的Help搜尋,Windows系統中的檔案搜尋等

我們通常從搜尋結果中經常發現有這麼一種規律:越是符合條件的搜尋結果會放在前面,不太符合條件的搜尋結果會排在後面,並且通常會設定字型高亮

資料庫檢索帶來的麻煩

假如我們要進行一次搜尋:

場景一:

select * from content where title like '%目標欄位';

但是這樣搜尋會有一個麻煩,就是在資料庫中通過like進行模糊查詢的話,會讓索引失效

場景二:

select *
from content where title like '%ant%'

搜尋效果不太理想,比如我們想要搜尋ant( 螞蟻),但是搜尋出了過多的結果出來,並且我們最想要的結果排在稍後的位置,並沒有相關度的排序,客戶更想要的是相關度最接近的排在最前面

在這裡插入圖片描述

而要解決這些問題,就要依靠Lucene了

什麼是全文檢索?

說全文檢索之前,必須先說下資料的分類:

  • 結構化資料
  • 半結構化資料
  • 非結構化資料

結構化資料:指的是有固定格式或有限長度的資料,如資料庫

半結構化資料:如XML,HTML,它們有自己的標籤比如< XX></ XX>,但是< XX>裡面寫多寫少,全看具體需求

非結構化資料;比如word文件,郵件等

非結構化資料有一種叫法叫"全文資料",從全文資料中進行檢索就叫全文檢索

特點就是:只關注文字,不關心語義

應用場景:比如百度搜索,你去搜索一個“麥當勞在哪裡?”,搜尋引擎並不會直接給予答案,而是去搜索標題裡面含有"麥當勞在哪裡"的網頁