一 全文檢索理論
1.1為什么需要全文檢索-解決資料查詢問題
1 海量資料like查詢(模糊查詢)效率低
2 查詢效果不好 搜索java,會把javascript這種不相關的也查出來
3 沒有相關度排序
4 沒有高亮
5 沒有摘要截取
1.2 什么是全文檢索
廣義:對結構化資料先創建索引,然后從索引中檢索的搜索。
狹義:對文本資料的搜索
1.3 優點
1 海量資料查詢效率高-基于索引查詢
2 查詢效果好 按照單詞搜索
3 有相關度排序
4 有高亮
5 有摘要截取
1.4 全文檢索解決方案
1 java工具包-lucene,中小型專案
2 全文檢索服務器(es,sorl等)-大型專案,小型專案也可以
1.5 全文檢索核心
創建索引:分詞-語法分析-排序-去重等操作
搜索索引: 搜索條件分詞-搜索-對結果進行處理
二 入門
2.1 創建專案并且匯入jar
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>5.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>5.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>5.5.0</version>
</dependency>
2.2 創建索引
1)獲取IndexWriter
2)創建document物件
3)把document添加到Indexwriter并且提交
4)luke圖形界面客戶端測驗
2.3 搜索索引
1)輸入關鍵字
2)通過關鍵字封裝Query物件
3)創建IndexSearcher
4)把Query傳入搜索器進行搜索-命中檔案數,檔案ids
5)通過檔案id獲取檔案
6)把檔案轉換為想要物件就ok
三 api詳解
1 FsDirectory.open底層平臺兼容
2 TextField(分詞)&StringFeild(不分詞)
3 ik分詞器
1 以lib方式匯入v5jar
2 簡單測驗-中英文結合
3 停止詞&擴展詞
4 分詞粒度 true:最大粒度 false細粒度分
4 TearmQuery&BooleanQUery
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/133127.html
標籤:非技術區
