【问题标题】:Sphinx seems to force a Order on ID?狮身人面像似乎强制对 ID 下订单?
【发布时间】:2016-10-06 20:14:06
【问题描述】:

我在我的索引 (weight) 中添加了一个新字段,这是我想要排序的基于整数的值。

我将它添加到选择中并以sql_attr_uint 调用它

当我在查询中调用它时,它会显示出来。但是,当我尝试对其进行排序时,我会遇到奇怪的行为。它总是按记录 ID 排序。所以Order on ID 等同于Order on Weight

我已经非常彻底地检查了索引,但找不到原因,sphinx 会以某种方式对记录 ID 自动排序吗?

我知道细节相当稀疏,但我希望在要求任何人进一步深入研究之前,我缺少一些基本的解释。

作为更新:我不相信 ID 字段排序已被“强加”在索引上,因为我可以按 # 其他字段排序,包括整数和文本,并且结果的返回独立于ID 值(例如,按姓氏排序记录 #100 Adams 将排在记录 #1 Wyatt 之前)

然而,在Weight 上排序总是返回与ID 下的相同顺序,无论是升序还是降序。没有关于字段或索引不存在或可排序的错误,没有忽略订单请求(descasc 工作)它只是忽略该特定字段值并改用 ID。

进一步更新:权重值通过连接到由 sphinx 索引的主表以下列方式进行索引:

sql_attr_multi = uint value_Weight from ranged-query; \
SELECT j.id AS ID, IF(s.Weight > 0, 1, 0) AS Weight \
FROM Customers j \
INNER JOIN CustomerSources s ON j.customer_id = s.customer_id \
AND j.id BETWEEN $start AND $end \
ORDER BY s.id; \
SELECT MIN(id), MAX(id) FROM Customers

一旦对idvalue_Weight 进行索引排序,就会返回相同的排序,而Weight 和ID 是不相关的。

【问题讨论】:

  • 我想知道这是否只是名称 weight 的问题。这就是 Sphinx 在全文匹配时用于动态计算权重的方法。
  • 哦,刚刚看到第二次编辑。所以你的“重量”属性实际上是一个 MVA(多值属性)——即使你只输入一个值。不确定是否可以直接按 MVA 排序,因为通常它是一个列表,所以按列表排序有点棘手。您必须将 'JOIN' 加入主 sql_query 以使其成为普通的单个属性
  • @barryhunter 即使我使用与 Weight 完全不同的名称,我也会遇到同样的问题
  • @barryhunter Weight 值实际上是一个标志 0(否)1(是)。我们尝试了不同的值,因为编码器读取 Sphinx 可能会遇到 0/1 问题但没有运气。想知道简单的文本 Y/N 是否会改变任何东西,还是仍然是“MVA”?
  • @barryhunter 作为 Sphinx 的新手,密切相关的事实似乎是 a) 当该字段用于订购时,Sphinx 不会在订单上抛出错误 b) desc 和 asc 是服从 c)虽然 asc 和 desc 总是在 ID 上。在我看来,连接以某种方式首先对该连接的 ID 施加了排序顺序。我在这里stackoverflow.com/questions/11518313/… 发现了一个类似的问题,你回答了这个问题,想知道这是否会在加入期间以某种方式发生?

标签: sphinx ord


【解决方案1】:

啊,是的,从 http://sphinxsearch.com/docs/current/mva.html

支持对 MVA 属性进行

过滤和分组(但不排序)

无法按 MVA 属性排序(如 cmets 中所述,这是有道理的,因为 MVA 通常包含许多值,按许多值排序相当“棘手”。

当你尝试时,它只是失败了。因此,排序会退回到索引的“自然”顺序,通常是按 ID。

请改用sql_attr_unit http://sphinxsearch.com/docs/current/conf-sql-attr-uint.html (但可能意味着重写 sql_query 以在 CustomerSources 上执行 JOIN)

【讨论】:

  • 我们删除了我在帖子中提到的连接,只是在初始 sql_query 中进行了连接,它工作正常。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2015-10-12
相关资源
最近更新 更多