在 Sphinx 搜索中按排名和字段排序如何相互关联?
How do ordering by rank and fields relate to each other in Sphinx search?
假设我有这样的查询:
SELECT <somefields>
FROM example
ORDER BY somefield ASC
OPTION ranker=bm25
这看起来很矛盾。它将如何排序?仅通过 somefield
?还是仅按 BM25 排名?或两者?如果两者都有,那么哪个最重要?我可以同时使用 somefield ASC, rank DESC
或 rank DESC, somefield ASC
吗?我怎样才能完全禁用排序?
仅按某个字段排序。有一个隐式 ORDER BY WEIGHT() DESC
,但如果设置任何顺序,它会完全覆盖隐式值。
... 可以选择在 multisort 中使用权重,例如
ORDER BY somefield ASC, WEIGHT() DESC
在您的示例查询中,实际计算的重量不会被使用。它不在排序中,它不在 select 中。事实上,无论如何,sphinx 可能会在内部更改为 'none' 排序器,但可以明确选择它
OPTION ranker=none
没有 'completely unsorted',不能说 ORDER BY NULL
之类的。
假设我有这样的查询:
SELECT <somefields>
FROM example
ORDER BY somefield ASC
OPTION ranker=bm25
这看起来很矛盾。它将如何排序?仅通过 somefield
?还是仅按 BM25 排名?或两者?如果两者都有,那么哪个最重要?我可以同时使用 somefield ASC, rank DESC
或 rank DESC, somefield ASC
吗?我怎样才能完全禁用排序?
仅按某个字段排序。有一个隐式 ORDER BY WEIGHT() DESC
,但如果设置任何顺序,它会完全覆盖隐式值。
... 可以选择在 multisort 中使用权重,例如
ORDER BY somefield ASC, WEIGHT() DESC
在您的示例查询中,实际计算的重量不会被使用。它不在排序中,它不在 select 中。事实上,无论如何,sphinx 可能会在内部更改为 'none' 排序器,但可以明确选择它
OPTION ranker=none
没有 'completely unsorted',不能说 ORDER BY NULL
之类的。