首页 > 解决方案 > 优先考虑 MySQL v5.6 结果

问题描述

PHP 7.3 / MySQL v5.6 MyISAM 多查询使用布尔模式:

我们在数据库中有多种乐器。我们想返回所有吉他的列表,并在结果顶部优先考虑红色或白色吉他。

根据波浪号运算符的定义,我们认为这可能是正确的方法。不幸的是,查询...

~guitar red white

...结果包括所有乐器,而不仅仅是吉他。看起来好像“干扰词”(在定义中)意味着该词在搜索查询中被标记为不相关。结果与发送相同red white。不确定这个的价值。

我们尝试了其他一些想法...

~(+guitar) red white  // also throws out "guitar."

+(~guitar) red white  // matches nothing, I guess because we're matching a noise word.

+guitar >(red white) // matches all guitars and doesn't do anything with red or white.

+guitar (>red >white) // same as above.

+guitar +(red white) // matches only guitars that are red or white

以上都没有给我们所有的吉他,优先考虑红色和白色。我们不知道客户在搜索时会输入什么内容,因此红色和白色只是应该具有更高优先级的属性示例。我将硬编码一个特殊的列表,以便在代码中特别强调这些属性。

当然有一个简单的解决方案?

顺便说一句,我们使用的是 ORDER BY id DESC,所以最新的 ID 排在第一位,但我们希望搜索查询具有优先权。理想情况下,结果将显示最新的红色吉他、最新的白色吉他,最后是从最新到最早的其余吉他。

标签: phpmysql

解决方案


推荐阅读