Sphinx 中整数的 CRC32
CRC32 on integer in Sphinx
我正在尝试使用 CRC32
来随机化 Sphinx 查询中的结果,该查询已经有多个嵌套订单,例如
Select CRC32(Field) as Random from Index Order by Premium,Weight(),Random
但是,我唯一的唯一字段是 reference
。它是一个整数,因此通过 CRC32 随机化为 0
.
我在我的 Sphinx 配置中 select 编辑了它 Select...
referenceas Randomizer...
然后将其指定为字符串,以便我可以在 select:
中使用它
sql_field_string = Randomizer
因此 'converted' 发短信。
然而当我运行:
``Select CRC32(Randomizer) as Random from Index Order by Premium,Weight(),Random`
我在 navicat 中收到警告,因为弹出窗口“3997755376”不是有效的整数值。我不确定这是 CRC32 限制还是 Navicat。
听起来像是 navicat 问题。 sphinx 中的 CRC32 生成一个无符号的 32 位整数。
sphinx 在内部将其用作 BIGINT
fixed #1643, CRC32() is now properly evaluated as unsigned in BIGINT context
至少从 2.2.10 版本开始,这可能会混淆 navicat。
如果您将它存储在一个属性中,无论如何,可以在索引时进行(使用 mysql 来处理它!),而不是在查询时进行。
sql_query = Select id,CRC32(reference) as Randomizer...
sql_uint_string = Randomizer
我正在尝试使用 CRC32
来随机化 Sphinx 查询中的结果,该查询已经有多个嵌套订单,例如
Select CRC32(Field) as Random from Index Order by Premium,Weight(),Random
但是,我唯一的唯一字段是 reference
。它是一个整数,因此通过 CRC32 随机化为 0
.
我在我的 Sphinx 配置中 select 编辑了它 Select...
referenceas Randomizer...
然后将其指定为字符串,以便我可以在 select:
中使用它sql_field_string = Randomizer
因此 'converted' 发短信。
然而当我运行:
``Select CRC32(Randomizer) as Random from Index Order by Premium,Weight(),Random`
我在 navicat 中收到警告,因为弹出窗口“3997755376”不是有效的整数值。我不确定这是 CRC32 限制还是 Navicat。
听起来像是 navicat 问题。 sphinx 中的 CRC32 生成一个无符号的 32 位整数。
sphinx 在内部将其用作 BIGINT
fixed #1643, CRC32() is now properly evaluated as unsigned in BIGINT context
至少从 2.2.10 版本开始,这可能会混淆 navicat。
如果您将它存储在一个属性中,无论如何,可以在索引时进行(使用 mysql 来处理它!),而不是在查询时进行。
sql_query = Select id,CRC32(reference) as Randomizer...
sql_uint_string = Randomizer