排序MYSQL全文搜索结果的相关性方法
P粉938936304
P粉938936304 2023-08-24 12:03:52
[MySQL讨论组]

我对MYSQL相对较新,有一个问题困扰了我一段时间。我尝试在各个地方搜索答案,但是还没有找到可接受的解决方案。

这是我目前运行的查询,用于找到给定搜索词的最佳匹配:

$query="SELECT * from `vocabulary` WHERE translation = 'word' OR translation LIKE '%word%'";

它返回的结果是全面的,包括所有相关的行。然而,它们没有按照任何特定的顺序排序,我希望在PHP中打印结果时,首先显示完全匹配的结果。像这样:


1 | word <-完全匹配

2 | crossword <-按字母顺序排序的部分匹配 /

3 | words

4 | wordsmith


非常感谢您提前的帮助。

-macspacejunkie

P粉938936304
P粉938936304

全部回复(2)
P粉090087228

LIKE不是全文搜索。在全文搜索中,MATCH(...) AGAINST(...)返回一个可以近似表示相关性的匹配分数。

P粉039633152
SELECT * from vocabulary 
WHERE translation like 'word'  
union all
SELECT * from vocabulary 
WHERE translation LIKE '%word%' and translation not like 'word'

将首先列出精确匹配

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号