CRC32在Sphinx中的整数

时间:2018-03-08 18:21:54

标签: sphinx crc32

我正在尝试使用CRC32来随机化Sphinx查询中的结果,该查询已经有多个嵌套订单,例如。

Select CRC32(Field) as Random from Index Order by Premium,Weight(),Random

但是,我唯一的唯一字段是reference。它是一个整数,因此通过CRC32随机化为0

我在我的Sphinx配置Select...参考as Randomizer...

中选择了它

然后将其指定为字符串,以便我可以在select:

中使用它

sql_field_string = Randomizer

所以它会被'转换'为文本。

但是当我跑步时:

``从Premium,W​​eight(),Random`索引顺序中选择CRC32(Randomizer)为随机

我在navicat中收到警报,因为弹出窗口“3997755376”不是有效的整数值。我不确定这是CRC32限制还是Navicat。

1 个答案:

答案 0 :(得分:0)

听起来像是一个导航问题。 sphinx中的CRC32产生无符号的32位整数。

内部狮身人面像将它用作BIGINT

  

修复#1643,CRC32()现在在BIGINT上下文中正确评估为无符号

至少从2.2.10发布,这可能会让navicat感到困惑。

如果你将它存储在一个属性中,无论如何,可以在索引时(使用mysql来处理它)执行它,比查询时间更糟糕。

sql_query = Select id,CRC32(reference) as Randomizer...
sql_uint_string = Randomizer