lucene全文搜索之一:lucene的主要功能和基本結構(基於lucene5.5.3)
- 2019 年 11 月 1 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/eguid_1/article/details/53086068
前言:lucene並不是像solr或elastic那樣提供現成的、直接部署可用的系統,而是一套jar包,提供了一些常見語言分詞、構建索引和創建搜索器等等功能的API,我們常用到的也就是分詞器、索引目錄管理、索引器以及幾種搜索器。
這裡我們會從lucene結構到實現逐一進行分析講解
注意:基於lucene5.5.3,(只支援5.x版本,不支援5.x以下和6.x以上的lucene版本)
jar包集合下載地址:http://download.csdn.net/detail/eguid_1/9677589
一、lucene的基本結構
lucene 的主要功能由索引器和索引搜索器構成,所有的外圍功能都為構建索引和搜索兩個功能提供服務
1、索引器構成
搜索器由分詞器、索引目錄、索引文檔構成
lucene全文搜索之二:創建索引器(創建IKAnalyzer分詞器和索引目錄)基於lucene5.5.2
(1)分詞器構成
內置分詞器:Lucene-analyzers-common-5.5.2.jar提供了多國語言的分詞器
常用中文分詞器:IKAnalyzer和庖丁
使用IK Analyzer中文分詞器(修改IK Analyzer源碼使其支援lucene5.5.x)
(2)索引目錄構成
索引目錄分為:文件目錄和記憶體虛擬目錄
補充:在大量實際應用中百萬級別的數據量下文件目錄和記憶體虛擬目錄索引在性能上並沒有太大差異
(3)索引文檔
索引文檔由多個索引欄位構成,用於保存要索引的欄位;
索引欄位由欄位名和欄位內容以及權重值組成。
lucene全文搜索之三:生成索引欄位,創建索引文檔(給索引欄位加權)基於lucene5.5.2
(補充:文章或者其他內容用於構建索引欄位,並賦予權重值,再將構建好的索引欄位保存到索引文檔,就可以用來搜索了,當然我們也可以將索引文檔保存到索引目錄,這樣我們就可以使用搜索器來搜索這個索引目錄中的索引文檔)
2、索引搜索器構成
索引搜索器由索引目錄創建,所以實際上可以把索引保存到不同的索引目錄,在搜索時通過不同的索引目錄進行分類搜索;
索引搜索器需要搜索器進行搜索結果(可以根據排序或者根據匹配值或權重值對搜索結果進行調整);
部分搜索器需要依賴分詞器進行分詞。
lucene全文搜索之四:創建索引搜索器、6種文檔搜索器實現以及搜索結果分析(結合IKAnalyzer分詞器的搜索器)基於lucene5.5.2
搜索器分為六種
(1)單詞搜索
搜索單個關鍵字
(2)前綴搜索
按照對應的前綴進行搜索
(3)範圍搜索
搜索指定一個範圍
(4)語句模糊搜索
使用內置分詞器或中文分詞器對查詢語句進行分詞並根據分詞結果模糊搜索
(5)條件模糊搜索
在語句模糊查詢基礎上加上OR或者AND進行條件搜索
補充:只支援OR、AND兩種條件搜索
(6)組合搜索
可以組合上面幾種搜索器進行混合搜索