php - 优先考虑 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 排在第一位,但我们希望搜索查询具有优先权。理想情况下,结果将显示最新的红色吉他、最新的白色吉他,最后是从最新到最早的其余吉他。
解决方案
推荐阅读
- javascript - 用js删除第一个点之前的部分字符串
- kubernetes - 如何在零 2 jupyterhub 部署(kubernetes)中管理共享笔记本权限?
- asp.net - 如何在 LINQ 中使用 IS NULL 表达 SQL 左连接
- javascript - 将行值映射到 ListItem 的键值
- node.js - npm run build 失败,错误源于构建代码
- google-data-studio - 谷歌数据工作室中基于表格行的自定义排序表
- .htaccess - WAMP服务器将旧域名重定向到新域名?
- prolog - Prolog 中的自由变量
- android - 如何将图像保存在图库中的新文件夹(与我的应用程序关联)中?
- docker - LightGMB predict_proba 导致 gunicorn 超时