国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

lucene并行建索引解決方案

2019-11-18 16:39:20
字體:
來源:轉載
供稿:網友

背景:單線程為30萬條數據建索引花了10分鐘,為了提高效率采用多線程

起初我采用多個線程共享一個indexwriter實例(也意味著往同一個目錄寫索引),這是luceneinaction和lucenewiki的推薦做法,不知道到為什么總是報FileNotFoundException,很讓人困惑。偶爾會成功一次。這個錯誤讓我想起另外一個問題,就是在建索引的時候搜索也會報這個
錯誤,luceneinaction明明也說了建索引讀的時候沒問題。

言歸正傳,我第二次嘗試使用每個線程單獨擁有自己的indexwriter實例,但往同一個目錄寫索引,果然報了
寫鎖的錯,這和書上說的很一致。

最后沒辦法了,我使用每個線程單獨使用自己的實例,往自己的目錄寫索引,最后一個干完的線程將所有的索引合并比如我開了4個線程,那么就有5個目錄build_index,build_index1,build_index2,build_index3,build_index4線程1往build_index1中寫,線程往build_index2,。。。依次類推,最后一個干完的將build_index1-4目錄的索引合并到build_index.

我開了4個線程嘗試發現也要花大概7-8分鐘,合并索引的過程非常快20秒左右。
開了10個線程,整個過程需要6分多鐘,合并索引也只花了21秒。

似乎效果并不明顯,這因該是因為數據量還不夠大引起的,數據量越大,并行的優勢會越明顯

可見合并索引的過程非常快,這又提供了另外的好處,我們通常將build_index作為搜索目錄,就像上面說的那樣,建索引的過程會影響搜索(雖然按照書上說是不影響的),如果我們采用這種方案,建索引的絕大部分過程其實與build_index目錄無關,只有最后合并的時候需要用到build_index,但那個過程又非常的快速,所以可以極大的緩解建索引給搜索帶來的問題。

如果條件允許,你可以擴展一下這個方案,將多線程索引升級為多臺機器同時建。
http://blog.csdn.net/pwlazy/archive/2007/02/16/1511097.aspx


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 聊城市| 遂昌县| 鞍山市| 应用必备| 厦门市| 马龙县| 梁平县| 桐乡市| 巍山| 新沂市| 内黄县| 宝兴县| 个旧市| 吉隆县| 洱源县| 长宁区| 凤台县| 通辽市| 平遥县| 安宁市| 建瓯市| 亳州市| 麦盖提县| 竹山县| 锦屏县| 桂平市| 措勤县| 黄平县| 清新县| 云南省| 海丰县| 漾濞| 伊金霍洛旗| 湄潭县| 沈丘县| 庄河市| 安徽省| 安徽省| 虎林市| 南昌市| 平潭县|