Sphinx中整数上的CRC32 [英] CRC32 on integer in Sphinx

查看:0
本文介绍了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

因此它将‘转换’为文本。

然而,当我运行时:

``从按溢价、权重()、随机数排序的索引中选择CRC32(随机器)作为随机`

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

推荐答案

听起来确实像是水猫问题。SPHINX中的CRC32产生一个无符号32位整数。

在内部,狮身人面像将其用作BIGINT

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

从2.2.10开始-至少是发行版,这可能会让Navicat感到困惑。

如果您将其存储在一个属性中,无论如何,都可以在索引时执行(使用MySQL处理它!),而不是在查询时执行它。

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

这篇关于Sphinx中整数上的CRC32的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆