2009-11-05 41 views
26

我們決定使用mongodb作爲一些web應用程序(而不是mysql),但希望繼續使用sphinx來索引/搜索存儲在mongodb中的所有數據。因爲mongodb object-id是默認的散列值 - 我們希望保留這一點 - 現在使用sphinx時出現了一個問題。因爲它的斯芬克斯文檔中表示:使用sphinx搜索與mongodb作爲數據源

所有文檔ID必須是唯一UNSIGNED非零整數 (32位或64位,這取決於構建時間設置)。

so ...解決這個問題的最好方法是什麼...我們如何將mongodb object-id映射到一個非零整數(和後面)?

UPDATE

凱西的回答是尋找到正確的方向,但在原來的字符串的屬性在當前的開發版本只適用於SQL數據源。對於xmlpipe,必須將補丁應用於結帳源。更多的信息可以在sphinx forum找到。

回答

28

您不能將對象ID用作Sphinx文檔ID - MongoDB對象ID大於Sphinx文檔ID的最大大小。

相反,您可以在生成Sphinx將要處理的XML(我假設您使用xmlpipe將Mongo數據導入Sphinx中?)並將MongoDB對象ID存儲爲字符串屬性時增加唯一ID在獅身人面像。

你需要獅身人面像的最新開發版本要做到這一點 - 看到我的回答這個問題的更詳細一點:Sphinx without using an auto_increment id

+0

非常感謝......似乎正是我需要的!通常我在運行開發版本時沒有問題。如果一切按預期工作,我會明天嘗試並設置'已回答'。再次感謝! – aurora 2009-11-05 17:55:39