我正在尝试使用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,Weight(),Random`索引顺序中选择CRC32(Randomizer)为随机
我在navicat中收到警报,因为弹出窗口“3997755376”不是有效的整数值。我不确定这是CRC32限制还是Navicat。
答案 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