以mongodb为数据源使用sphinx搜索

以mongodb为数据源使用sphinx搜索,mongodb,sphinx,Mongodb,Sphinx,我们决定将mongodb用于某些web应用程序(而不是mysql),但希望继续使用sphinx来索引/搜索mongodb中存储的所有数据。由于mongodb对象id是每个默认值的哈希值——我们希望继续使用它——现在使用sphinx有一个问题。正如狮身人面像文档中所说: 所有文档ID必须是唯一的无符号非零整数 (32位或64位,取决于构建时设置) 所以。。。解决这个问题的最好方法是什么。。。我们如何将mongodb对象id映射到非零整数(并返回) 更新 casey的答案是正确的,但事实证明,字符串

我们决定将mongodb用于某些web应用程序(而不是mysql),但希望继续使用sphinx来索引/搜索mongodb中存储的所有数据。由于mongodb对象id是每个默认值的哈希值——我们希望继续使用它——现在使用sphinx有一个问题。正如狮身人面像文档中所说:

所有文档ID必须是唯一的无符号非零整数 (32位或64位,取决于构建时设置)

所以。。。解决这个问题的最好方法是什么。。。我们如何将mongodb对象id映射到非零整数(并返回)

更新


casey的答案是正确的,但事实证明,字符串属性在当前的开发版本中仅适用于sql数据源。对于xmlpipe,有必要对签出源应用补丁。有关这方面的更多信息,请参见。

您不能将对象id用作Sphinx文档id-MongoDB对象id大于Sphinx文档id的最大大小

相反,您可以在生成Sphinx将要处理的XML时增加一个唯一ID(我假设您使用xmlpipe将Mongo数据放入Sphinx?),并将MongoDB对象ID作为字符串属性存储在Sphinx中


要做到这一点,您需要Sphinx的最新开发版本-请参阅我对这个问题的回答,了解更多详细信息:

非常感谢。。。似乎正是我需要的!一般来说,我在运行开发版本时没有问题。如果一切按预期进行,我明天将尝试设置“已回答”。再次感谢!