mysql 如何对全文搜索中的SQL结果进行排序

jvidinwx  于 2023-01-25  发布在  Mysql
关注(0)|答案(1)|浏览(141)

我尝试在我的项目中使用全文搜索。当我使用自然语言全文搜索搜索超过单词时,它对我来说工作得很好。下面是我的代码的一些示例:

SELECT * FROM table WHERE MATCH (title, title_ar, title_en) AGAINST ('some exemple' IN NATURAL LANGUAGE MODE);

我也可以这样做来获得分数并按分数排序:

SELECT *,
    MATCH (title, title_ar, title_en) AGAINST ('some exemple' IN NATURAL LANGUAGE MODE) as scor 
    FROM table 
    WHERE MATCH (title, title_ar, title_en) AGAINST ('some exemple' IN NATURAL LANGUAGE MODE);

问题是当我使用一个词来搜索时,就像这样:

SELECT *,
    MATCH (title, title_ar, title_en) AGAINST ('exemple' IN NATURAL LANGUAGE MODE) as scor 
    FROM table 
    WHERE MATCH (title, title_ar, title_en) AGAINST ('exemple' IN NATURAL LANGUAGE MODE);

它给了我更多相同分数的结果,按升序排序。对我来说,我想按id DESC排序,但我不能这样做。

kx1ctssn

kx1ctssn1#

基本上,你想按scorid对结果进行排序。未经测试的代码有望为你解决这个问题:

SELECT *,
    MATCH (title, title_ar, title_en) AGAINST ('exemple' IN NATURAL LANGUAGE MODE) as scor 
    FROM table 
    WHERE MATCH (title, title_ar, title_en) AGAINST ('exemple' IN NATURAL LANGUAGE MODE)
ORDER score DESC, id

相关问题