当前位置: 首页 > 面试题库 >

以最喜欢的方式订购SQL?

越学义
2023-03-14
问题内容

我有以下查询:

SELECT * FROM table_name
WHERE (col_1 LIKE '%$keyword%'
    OR col_2 LIKE '%$keyword%'
    OR col_3 LIKE '%$keyword%')
  AND .... <some optional filters> ...

是否有根据最相关结果进行分类的策略?


问题答案:

当谈论“相关性”时,您确实想要自然语言搜索,这是MySQL全文搜索支持的。语法是比正常的不同 一样 的查询,你需要一个特殊的索引添加到表中,但排序按相关性可能是这样。

这是MySQL计算相关性的方式(来自链接):

如前面的示例所示,在WHERE子句中使用MATCH()时,返回的行将自动按照相关性最高的顺序进行排序。相关性值是非负浮点数。零相关性意味着没有相似性。相关性是根据行中的单词数,该行中唯一单词的数量,集合中单词的总数以及包含特定单词的文档(行)的数量来计算的。

要在现有表上创建全文索引,请使用
FULLTEXT 修饰符:

CREATE FULLTEXT INDEX index_name
ON table_name (col1, col2, col3)

然后,您可以执行如下查询以按相关顺序检索结果:

SELECT * FROM table_name
WHERE MATCH (col1,col2,col3)
AGAINST ('keyword' IN NATURAL LANGUAGE MODE);


 类似资料:
  • 问题内容: 是否可以在一个查询中将多个SQL LIKE通配符串在一起-像这样? 目的是查找同时包含通配符但没有特定顺序的记录。 问题答案: 正确的SQL语法是:

  • 本文向大家介绍说说微信上你最喜欢的功能,以及为什么喜欢。相关面试题,主要包含被问及说说微信上你最喜欢的功能,以及为什么喜欢。时的应答技巧和注意事项,需要的朋友参考一下 喜欢: 1.小程序---节省了好多额外APP下载,大有“微信在手天下我有”的畅***;微信页下滑或搜索就可以很便捷地找到小程序的入口;与好友之间的分享也很方便。 2.订阅公众号---方便了解阅读各种感兴趣的信息与资讯;便于打发利用碎

  • 喜欢资讯 取消喜欢资讯 资讯喜欢列表 喜欢资讯 POST /news/{news}/likes Response Headers Status: 201 Created 取消喜欢资讯 DELETE /news/{news}/likes Response Headers Status: 204 No Content 资讯喜欢列表 GET /news/{news}/likes Respons

  • 点喜欢 取消喜欢 喜欢的人列表 点喜欢 POST /feeds/:feed/like Response Status: 201 Created { "message": [ "操作成功" ] } 通知类型 { "channel": "feed:digg", // 通知关键字 "target": 325, // 动态id "content": "@2222 点喜欢了

  • 我想按字母顺序排列字符串“s”的子串,长度为“k” 我尝试首先使用函数对字符串的字符进行词法排序,然后尝试打印第一个和最后一个子字符串 预期输出:将字典上最小和最大的子字符串作为单个换行符分隔的字符串返回。

  • 本文向大家介绍你最喜欢用哪些编辑器?喜欢它的理由是什么?相关面试题,主要包含被问及你最喜欢用哪些编辑器?喜欢它的理由是什么?时的应答技巧和注意事项,需要的朋友参考一下 vscode。可以灵活安装不同插件,真正做到了一个编辑器,适配所有的编程语言。 它和virtual stuido理念不同,vs是想把所有的都集成到一起,导致它的安装包越来越庞大,臃肿,而vscode凭借插件运行机制,即插即用,非常灵