如何通过 sql 查询更新 sphinx 搜索索引中的记录?

Mar*_*cin 1 sphinx

我想在 sphinx 搜索索引中更新记录时遇到问题

mysql> UPDATE indexname SET field = 'value' where id = 295;

ERROR 1064 (42000): sphinxql: syntax error, unexpected QUOTED_STRING, expecting CONST_INT (or 3 other tokens) near ''value' where id = 295'
Run Code Online (Sandbox Code Playgroud)

是否可以更新磁盘索引中的某些文本字段(不是 RT)

我的 sphinx 版本是:2.1.7-id64-release (rel21-r4638)

谢谢你的一些想法:)

bar*_*ter 5

不可以。您不能更新FieldRT 索引中的 a。

要“更新” a Field,您需要删除整行,然后重新插入。有一个REPLACE INTO命令可以在一个步骤中完成这两项操作。


只能attributes更新。(sphinx 的早期版本不能更新字符串属性,即只能更新数字属性,但我认为最新版本已经获得了更新字符串属性的能力。)


编辑,实际上请注意,现在您提到了磁盘索引,而不是 RT 索引。仍然无法更新Fields(即既不在 RT 上也不在磁盘索引上)

同样,您可以更新一些属性,但有一些限制,请参阅http://sphinxsearch.com/docs/current.html#api-func-updateatttributes (不确定对更新 RT 索引上的字符串属性的最新支持,甚至扩展到磁盘-索引)

...简而言之 UPDATE 在磁盘和 RT 索引上的工作方式几乎相同。RT 索引只有 INSERT/REPLACE/DELETE,您根本无法将其与磁盘索引一起使用。