Lucene4 3開發之插曲之斗轉星移

2021-09-01 19:25:06 字數 1204 閱讀 7326

[b][size=x-large]

[url]

謝謝配合 [/size]

[/b]

[b][size=x-large][color=green]散仙在上篇文章中,總結了幾個lucene的特殊的分詞需求,以及怎麼定製我們自己的tokenizer和analyzer用來處理他們,那麼本篇我們依舊是分析使用者需求(哈哈,也不算是使用者需求,群裡面(324714439)朋友們提問的問題),然後找到最合適的解決方法。[/color][/size][/b]

[b][size=x-large][color=green]我們先來看下下面的問題,現在我們的索引裡有2億多的資料,那麼現在的需求是,把索引裡的全部資料,讀取然後寫入txt文字裡,對於這麼乙個量級的資料,顯然是不可能一下子全部讀取完的,那得要多大的記憶體才能夠支援下來,是乙個很恐怖的記憶體量,所以就引入散仙今天要給大家介紹的乙個功能,lucene的分頁技術。[/color][/size][/b]

[b][size=x-large]在介紹分頁之前,我們先來看看上面的那個需求,不用分頁的解決辦法,

其實在lucene裡面,每乙個索引都會對應乙個不重複的docid,而這一點跟oralce資料庫的偽列rownum一樣,恰恰正是由於這個docid的存在,所以讓lucene在海量資料檢索時從而擁有更好的效能,我們都知道oracle資料庫在分頁時,使用的就是偽列進行分頁,那麼我的lucene也是一樣,既然有乙個docid的存在,那麼上面的需求就很簡單了。[/size][/b]

[b][size=x-large][color=green]方法一:依次根據每個docid獲取文件然後寫入txt中,這樣的以來,就避免了記憶體不足的缺點,但是這樣單條讀取的話,速度上可能會慢一點,但能滿足需求無可厚非。偽**如下[/color][/size][/b]

tryelse

}

[b][size=x-large][color=green]最後我們來看下使用searcherafter進行分頁的方式,**如下:[/color][/size][/b]

[b][size=x-large][color=green]至此,我們已經了解了lucene中的分頁技術,至於,我們在專案中該如何使用,都要根據我們的實際情況處理,因為分頁技術常常會跟其他的,排序,過濾,評分等一些技術結合使用。[/color][/size][/b]

[b][size=x-large]

[url]

謝謝配合 [/size]

[/b]

Lucene4 3開發之插曲之烽火連城

url size color b b color green size x large 上次散仙給大家總結了lucene中,一些常用filter的用法和例子,今天,我們在來看下不在filter家族中的乙個特殊的filter,屬於lucene捐贈模組的特殊包中的類duplicatefilter,這個f...

Lucene4 3開發之第五步之融丹築基 五

url color size b b color green size x large 那麼,本篇散仙就來看下我們在lucene中怎麼使用其豐富的排序功能。size color b b color green size x large 在這之前,我們先來熟悉下lucene中排序的基本知識,在預設情況...

Lucene之AttributeImpl原始碼簡單

一 簡單介紹 attribute介面是乙個空介面 attributeimpl也繼承attribute介面 根據原始碼是 記錄物件的屬性,但是不包含靜態屬性 對於一些屬性是attribute是介面,然後attributeimpl去實現介面。例如 offsetattribute 和 offsetattr...