我在最相关的文本结果搜索中找到了很多答案,但在数字上却没有多少答案。如果有一种方法可以让MySQL查询以最相关的方式返回结果进行数字搜索,那将是最好的。它会先按精确匹配排序,然后将变量分支出来,直到得到所有结果。
实施例: 变量= 54
结果= 54,55,53,56,52,57,51 ......
有没有人知道这样做的方法,并将其全部保存在一个查询中?我想如果我必须这样做,我可以将查询放入一个php循环,只需增加数字,返回结果,因为它们被发现。但这似乎是代码密集型的,会导致结果出现滞后。
我看到了这个thread,但我不确定这会回答我的问题。
提前致谢。
答案 0 :(得分:4)
也许是ORDER BY ABS(column - 54)
?
MySQL不能为此使用索引,因此它不会特别快速,但它可以满足您的需求。
答案 1 :(得分:0)
我认为如果有关于您的桌子的更多信息会有所帮助。您是在谈论文本或字段中的某些文本中的数字还是在谈论实际的数字列?
如果是数字列,为什么不使用范围?像这样:
SELECT number_field, ABS(number_field - $variable) as relevance
FROM table
WHERE number_field >= ($variable - 3)
AND number_field <= ($variable + 3)
ORDER by relevance ASC, number_field DESC;
如果$ variable = 54,它应该返回你上面的结果。