2012-01-12 63 views
0

我有一個網站使用Sphinx搜索服務器來搜索MySQL數據庫。這是完美的工作,但問題是當新的項目被添加到數據庫。我的問題是何時是執行重新索引的最佳時間以及如何正確執行重新索引。目前我正在做一個「索引器 - 所有 - 旋轉」,但這似乎並不奏效。更新索引的唯一方法是停止sphinx然後執行一個索引器 - 然後重新啓動服務。在現場,這顯然不理想。如果任何人有任何關於如何正確地做到這一點的信息,我會非常感激。如何正確重新索引Sphinx搜索服務器?

謝謝

+0

你看着日誌文件被創建第二索引文件? – 2012-01-12 20:04:28

回答

2

如果我理解正確,不需要重新啓動。 -all選項告訴索引器更新每個索引。 -rotate旋轉索引,即創建每個索引的臨時副本並在完成時替換舊索引。根據Sphinx手冊rotating works as follows:「它創建了第二個索引,與第一個索引平行(在同一個地方,簡單地包括.new在文件名中)。索引器完成後通過發送SIGHUP信號通知searchd,而searchd將嘗試重命名索引(重命名現有的索引以包含.old並重命名.new以替換它們),然後從較新的文件開始投放。根據seamless_rotate的設置,可能會稍微延遲新的指數「。

無縫和「中斷」旋轉之間存在差異。該類型可以使用Sphinx配置文件中的seamless_rotate參數進行控制。在旋轉過程中以更高的峯值內存使用量爲代價,但不會中斷。

獅身人面像版本也很重要。在以前版本a restart was required to update the index中,在最新版本中,這似乎不再必要。

0

'--rotate'選項旋轉索引,即創建每個索引的臨時副本並在完成時替換舊索引。它創建了第二個索引,與第一個索引平行(在同一個地方,只包括.new在文件名中)。一旦完成,索引器通過發送SIGHUP信號通知searchd,並且searchd將從具有新的擴展名的較新文件開始提供服務。如果.new文件已經存在於系統中,則只需在使用'--rotate'選項後更新它們。

的「--all」選項告訴索引更新每一個索引,但沒有擴展。新的使用該「--rotate」選項