mongodb - 使用 sphinx 搜索与 mongodb 作为数据源

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

ALL DOCUMENT IDS MUST BE UNIQUE UNSIGNED NON-ZERO INTEGER NUMBERS (32-BIT OR 64-BIT, DEPENDING ON BUILD TIME SETTINGS).

所以...解决此问题的最佳方法是什么...我们如何将 mongodb object-id 映射到非零整数(并返回)?

更新

casey 的答案是正确的研究方向,但事实证明,字符串属性在当前的开发版本中仅可用于 sql 数据源。对于 xmlpipe,有必要将补丁应用到结帐源。更多信息可以在 sphinx forum 中找到。 .

最佳答案

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

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

您需要最新的 Sphinx 开发版本才能执行此操作 - 请参阅我对此问题的回答以了解更多详细信息:Sphinx without using an auto_increment id

https://stackoverflow.com/questions/1680633/

相关文章:

javascript - 在 JavaScript 比较中应该使用哪个等号运算符(== vs ===

mongodb - 使用 mongodb 或 cassandra 的空间数据

javascript - 如何从数组中删除特定项目?

javascript - 如何检查字符串是否包含 JavaScript 中的子字符串?

javascript - 如何重定向到另一个网页?

javascript - 如何检查元素是否隐藏在 jQuery 中?

javascript - "use strict"在 JavaScript 中做了什么,背后的原因是

node.js - 模拟/测试 Mongodb 数据库 Node.js

java - 编码对象时未使用 MongoDB BSON 编解码器

javascript - var functionName = function() {} vs f