【发布时间】:2013-11-24 03:49:13
【问题描述】:
斯芬克斯把我难住了。我有一个 RT 索引:
+-----------------+--------+
| Field | Type |
+-----------------+--------+
| id | bigint |
| value | field |
| source_id | bigint |
| hits | bigint |
+-----------------+--------+
我要更新多个具有相同 source_id(唯一 ID)的行。
当我尝试做多个例如:
UPDATE song_rt SET HITS = 109475 WHERE id in (11136,1194944,1194945,1194946,2661016,2661017);
它不会更新最后两个(2661016、2661017),即使它说更新了 6 行。如果我单独或一起更新最后两个,它会起作用,但是只要我添加前 4 个中的一个,它就会更新那些,但不会更新 2661016 或 2661017。我什至尝试颠倒我传递 ID 的顺序没有运气的更新语句。
如果我尝试通过 source_id 更新:
UPDATE song_rt SET HITS = 109475 WHERE source_id = 11812;
我收到相同的 6 行受影响的消息,但最后一个 两个还没更新。
我正在运行启用了 64 位 ID 的 Sphinx 2.1.2。
我已经通过代码 (PHP) 和 CLI 对此进行了测试。谷歌搜索和搜索堆栈没有出现任何东西。有什么想法吗?
【问题讨论】:
-
听起来像一个错误。也许这些行位于不同的分片中。您或许可以尝试sphinxsearch.com/docs/current.html#sphinxql-optimize-index 减少到一个分片。