您好,登錄后才能下訂單哦!
本篇內容介紹了“Lucene4.7索引和檢索的常用API有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
為了方便對比學習,下面給出表格數據
索引期間使用的API組件 | 檢索期間使用的API組件 |
IndexWriter | IndexReader |
IndexWriterConfig | IndexSearcher |
Directory | Directory |
Analyzer | QueryParser或者Query子類 |
Document | TopDocs |
Field | ScoreDoc--Term |
下面筆者就對上圖組件一一剖析下
首頁要介紹的就索引期間的各個類
1,IndexWriter是索引過程中的核心類,主要負責創建索引或者打開已有索引,提供對索引的
添加,刪除,修改等操作
2,IndexWriterConfig這個API在低版本的Lucene中是沒有此配置類的,這個類也比較重要,使用此類則需要在其構造方法中傳入2個參數,第一個參數是Lucene當前的版本號,第二個是索引是使用的分詞器,除了這個我們最常用的功能,里面還提供了大量工具方法,例如,設置內存里緩沖大小,設置文檔數據批量提交時大小,獲取線程狀態,設置創建模式,以及是否開啟復合索引的等等一系列,可以對索引做一些基本的配置優化等信息。
3,Directory這個類代表了Lucene索引的存放位置,是一個抽象類,它有一系列子類可以用來處理索引,使用不同的子類對于系統的性能,影響會很大,但歸其本質上,提升性能,無非就拿空間換時間或拿時間或空間2中情況,在具體使用時,我們可以使用其子類來獲取索引所在的存儲路徑,然后將其傳給IndexWriter類構造方法里。
4,Analyzer這個類也是所有分析器的基類,文本文件在索引前,需要經過分析器處理,處理成對應的語匯單元,統一格式,它能提取有效的信息,過濾掉一些禁用詞,Lucene自帶有幾個分析器,但大部分都是對英文或歐洲語言處理的,如果想要使用中文的分詞器,可以使用其自帶的SmartCN分詞器,也可以用開源的IK,messeg4j等等,選擇什么樣的分析器是索引過程中很重要的一步,這個關鍵還得看自己的業務需求定。
5,Document代表一個文檔的意思,類似于數據庫的一行記錄,我們可以向文檔中,添加自己想要的域字段,然后在把一個個文檔索引起來,提供檢索。
6,Field就是文檔中存儲的域,每一個域都有一個域名和域值,這就類似數據庫的字段名跟值一樣,我們可以使用Field來精確控制各個域的值,最常用的有2個Field,一個是不提供分詞的StringField和另外一個分詞的TextFiled,當然還有其他的一些Field,在這里就不多介紹了。
7,IndexReader這個類用來獲取Directory的子類打開的索引文件流,然后在將進IndexSearcher的構造方法里,進行查詢組件的初始化操作,這個類再低版本的的Lucene里也是不存在的,在后來新的版本里才添加的類。
8,IndexSearcher這個類是程序搜索期間的核心類,是連接索引的橋梁,它是以只讀的方式打開索引,提供了大量檢索,排序,過濾的等等以及其他的一些功能。
9,QueryParser或Query都可以完成一些檢索功能,不同的是QueryParser提供的功能更為強大,方便自定義開發一些檢索方案,而Query及其麾下的一系列子類是Lucene中自帶的一些API,使用這些API,大部分情況下都可以完成一些基本的檢索,如果需要定制化自己的檢索方案則需要使用QueryParser,大多數情況下,我們最常使用的是Query下面的TermQuery子類,當然還有其他大量的特定功能的Query子類存在。
10,TopDocs這個類是一個簡單的容器指針,它一般會記錄前N個檢索的結果,在TopDocs中,它只會存儲這個文檔的docid以及獲取的得分情況,另外這前N個結果,默認的排序方式,是按照得分的大小排列的。
11,ScoreDoc類通常我們使用的是一個數組,它里面也只會包含這個文檔的docid以及獲取的得分情況,與TopDocs不同的是,我們可以使用這個類,來進行類似數據庫的分頁操作,當然你得保證你有足夠的內存,如果是海量數據的分頁,這個操作很容易造成內存溢出,這時候我們就需要考慮其他方法了。
12,Term類是搜索功能最基本的單元,與Field類似,檢索的時候需要傳入域名及檢索的字符串,是一個小而不可或缺的精簡類。
“Lucene4.7索引和檢索的常用API有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。