基於Lucene的全文檢索實踐


由於項目的需要,使用到了全文檢索技術,這里將前段時間所做的工作進行一個實踐總結,方便以后查閱。在實際的工作中,需要靈活的使用lucene里面的查詢技術,以達到滿足業務要求與搜索性能提升的目的。

一、全文檢索介紹

1.1為什么需要全文檢索

數據可以分為結構化數據和非結構化數據,對數據查詢時,結構化數據可以通過SQL語句等方式查詢,而非結構化數據(如txt,word等)無法用此方式查詢。

我們利用將非結構化數據轉化為非結構化數據(即先將文件中單詞按空格拆分,把單詞創建一個索引,然后查詢索引,根據單詞和文檔的關系找到文檔列表,即全文檢索),進行快速查詢。

1.2什么是全文檢索

先創建索引,然后查詢索引的過程是全文檢索

具有一次創建,多次使用的特點(創建的速度有點慢)。

二、全文檢索流程

1. 綠色表示索引過程,對要搜索的原始內容進行索引構建一個索引庫,索引過程包括:確定原始內容即要搜索的內容→采集文檔→創建文檔→分析文檔→索引文檔。 
2. 紅色表示搜索過程,從索引庫中搜索內容,搜索過程包括:用戶通過搜索界面→創建查詢→執行搜索,從索引庫搜索→渲染搜索結果。

三、全文檢索索引

3.1倒排索引

倒排索引即為全文檢索的核心的部分,所謂倒排索引,簡單地就是,根據單詞,返回它在哪個文件中出現過,而且頻率是多少的結果。這就像百度里的搜索,你輸入一個關鍵字,那么百度引擎就迅速的在它的服務器里找到有該關鍵字的文件,並根據頻率和其他的一些策略(如頁面點擊投票率)等來給你返回結果。這個過程中,倒排索引就起到很關鍵的作用。

3.2創建索引

你可以利用你的技術從數據庫、互聯網、爬蟲、word等方式獲取原始數據,即采集信息

3.3構建索引文檔

對應每個原始文檔創建一個Document對象(擁有唯一的ID)

每個Document中包含多個Field

不同的Document可以有不同的Field

同一個Document可以有相同的Field

域中以鍵值對的形式保存域的名稱和值

四、全文檢索使用

1、所需核心庫

lucene-core

lucene核心庫

lucene-queryparser

lucene查詢解析器

lucene-analyzers-common

lucene默認分詞器

lucene-analyzers-smartcn

lucene提供的中文分詞器

ik-analyzer

開源中文分詞器

2、lucene查詢

查詢方式

意義

TermQuery 精確查詢
TermRangeQuery 查詢一個范圍
PrefixQuery 前綴匹配查詢
WildcardQuery 通配符查詢
BooleanQuery 多條件查詢
PhraseQuery 短語查詢
FuzzyQuery 模糊查詢
Queryparser 萬能查詢(上面的都可以用這個來查詢到


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM