生活中的搜索
相關的搜索實際上無處不在,比如百度的搜索,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文檔,郵件等
非結構化數據有一種叫法叫"全文數據",從全文數據中進行檢索就叫全文檢索
特點就是:只關注文本,不關心語義
應用場景:比如百度搜索,你去搜索一個“麥當勞在哪裏?”,搜索引擎並不會直接給予答案,而是去搜索標題裏面含有"麥當勞在哪裏"的網頁