2009-11-23 35 views
4

我一直在閱讀獅身人面像搜索引擎和思考獅身人面像寶石。在TS docs它說...獅身人面像三角洲索引 - 仍然需要重建主索引?

獅身人面像有一個主要的限制時相比很多其他搜索服務:你不能更新[的]在索引單個文檔的領域,但必須重新處理該索引的所有數據。

如果我理解正確的話,當用戶添加或編輯的東西,變化不會反映在指數手段。因此,如果他們添加一條記錄,它將不會出現在搜索中,直到整個索引被重建。或者如果他們刪除了一條記錄,它會出現在搜索中,然後導致某種錯誤或令人沮喪的行爲。

此外,重建索引Sphinx時關閉。因此,您的應用程序的搜索功能會定期關閉(每小時一次,每幾小時一次),任何嘗試搜索的用戶都會收到錯誤消息或「稍後嘗試」消息。

好的,在真實世界的應用程序中顯然沒有什麼是可以接受的。所以你幾乎不得不使用增量索引。

但很顯然,你仍然需要定期關閉您的搜索引擎,並做了充分的索引...

打開增量索引不會刪除需要定期運行完全重新索引,否則三角洲指數本身將會變得和核心指數一樣大,這就消除了保持分離的優勢。它還會減慢對服務器的更改模型記錄的請求。

我真的不明白這裏的文檔是什麼意思。也許有人可以幫助我。我認爲三角洲索引的整個點是你不需要需要定期重建索引。只要數據發生變化,它就會立即更新。

因爲重建索引每小時或每一件事都會被搞砸了,對吧?

+0

「三角洲指數本身將變得和核心指數一樣大」,這一點絕對是錯誤的。每次進行實時更新/合併時,增量索引將被替換爲新的先前未索引的數據。 – 2009-11-25 00:54:49

回答

11

如果我理解正確的話,這意味着 當用戶添加或編輯的東西, 的變化不會反映在 指數。所以如果他們添加一條記錄, 將不會出現在搜索中,直到 整個索引被重建。或者如果他們刪除了一條記錄,它會在 搜索中出現,然後導致某種 錯誤或令人沮喪的行爲。 此外,重建索引Sphinx時關閉。 ...

你不需要重建索引 - 只需重新索引它們。這意味着 - 不需要停止守護進程。只有在改變索引的結構之後才需要重建 - 而這種情況並非如此。

對於第二部分 - 再次,你不重建索引,ergo停止deamon是沒有必要的。使用增量索引時,實際上有兩個用於搜索的索引 - 主索引(應重新索引一次)和增量索引(在索引的每個相關操作後刷新)。如果我理解正確,當重新索引主索引(例如。通過cron任務),delta索引簡單地合併到主索引中,所以它不會佔用太多的地方並保持快速。

+2

當重新索引主索引時,會執行完整索引(即,未以任何方式合併該增量)。除此之外,您的評論是真實的。 – 2009-11-23 11:48:09

+0

是的,它沒有物理合並,這是一個錯誤的措辭。感謝您指出。 – 2009-11-23 12:16:02

+0

另外,值得注意的是 - 思維獅身人面像中的刪除操作(儘可能多的)不需要增量索引。 – pat 2009-11-24 01:33:01

相關問題