較早的時候分析過jforum中的lucene索引模組,當時覺得**真是短小精悍!值得學習。
1.searchmanager介面,
jforum定義了乙個searchmanager介面,通過lucenemanager實現了其中的方法。對於索引和檢索進行統一的管理。
其餘的是,針對post的create、delete、update索引方法。
2.luceneindexer類
主要是對post建立索引,主要方法有:
2.1 create(post post)
新建乙個lucene中的indexwriter,通過createdocument方法對於post進行索引,關閉writer,呼叫notifynewdocumentadded()方法
告知indexsearch索引已經更新,需要重新的開啟。
2.2 createdocument(post)方法
將post_id,forum_id,topic_id,user_id,文章內容進行索引。
2.3 update(post)方法
更新post之後,重新建立索引。
首先刪除該post的索引,通過post_id,然後重新建立索引。
2.4 notifynewdocumentadded方法
在建立索引或者重新建立索引之後,都呼叫notifynewdocumentadded通知indexsearch,索引檔案已經更新,需要重新載入。
其中lucenesearch實現了newdocumentadded介面。
重新開啟索引檔案。
3.索引總結
結構很清晰,就是提交post或者更新post之後,重新開啟索引檔案。
Jforum中索引模組的分析 2
在第一部分中主要分析了通過searchsetting對檢索和索引進行控制。本部分主要對於搜尋部分lucenesearch類進行乙個分析和闡述。1.lucenesearch類 lucenesearch類主要完成post的檢索功能,通過分析使用者輸入的搜尋引數,反正相關的結果。1.1 通過postid進...
商品模組表結構分析 1
1.表結構分析 1.1 商品模組表結構分析 from django.db import models from utils.mybasemodel import base class goods base goods type 1 vip 2 course channel type 1 普通 2 c...
索引在Oracle中的應用分析
索引是提高資料查詢最有效的方法,也是最難全面掌握的技術,因為正確的索引可能使效率提高10000倍,而無效的索引可能是浪費了資料庫空間,甚至大大降低查詢效能。一.索引的管理成本 1 儲存索引的磁碟空間 2 執行資料修改操作 insert update delete 產生的索引維護 3 在資料處理時所需...