sphinx啟動並執行時候執行了 updateAttributes 。執行之後可以尋找到更新後的資料。
但過了一段時間好像又變回了原來的資料。不是很確定,但應該是這樣。
我查了下updateAttributes相關的內容,說這個是修改當前記憶體裡的資料,如果要修改到檔案,就需要重新啟動引擎。
我的問題是,修改了記憶體裡的資料是不是說明這個值在sphinx重啟之前一直儲存在記憶體裡?
還是,當這個文檔從記憶體裡移出的時候這些變更資訊也隨之移出?導致下次該文檔重新匯入記憶體的時候只能匯入舊資料?
我們的引擎一直是保持開著的,不會對他進行重啟。這個有沒有什麼弊端呢?
回複內容:
sphinx啟動並執行時候執行了 updateAttributes 。執行之後可以尋找到更新後的資料。
但過了一段時間好像又變回了原來的資料。不是很確定,但應該是這樣。
我查了下updateAttributes相關的內容,說這個是修改當前記憶體裡的資料,如果要修改到檔案,就需要重新啟動引擎。
我的問題是,修改了記憶體裡的資料是不是說明這個值在sphinx重啟之前一直儲存在記憶體裡?
還是,當這個文檔從記憶體裡移出的時候這些變更資訊也隨之移出?導致下次該文檔重新匯入記憶體的時候只能匯入舊資料?
我們的引擎一直是保持開著的,不會對他進行重啟。這個有沒有什麼弊端呢?
sphinx文檔資訊的儲存模式,包括有none,extern,inline。預設是extern,當使用extern的時候,文檔的屬性是存放在另外一個檔案(spd)中的,但是當啟動searchd的時候,會把這個檔案載入到記憶體中。
移除後是會丟失的,可以通過attr_flush_period控制每隔多少時間寫回到磁碟中。
參考資料:
http://www.coreseek.cn/docs/coreseek_4.1-sphinx_2.0.1-beta.html
http://www.cnblogs.com/yjf512/p/3598332.html