全文搜索超过2个表与不同的数据



你好,我有这个sql语句

SELECT *,  MATCH (first_name,last_name) AGAINST ('*?*' IN BOOLEAN MODE) AS score, MATCH (groups.groupname) AGAINST ('*?*' IN BOOLEAN MODE) AS sscore
FROM users INNER JOIN groups  
WHERE MATCH (first_name,last_name) AGAINST ('*?*' IN BOOLEAN MODE) OR MATCH (groups.groupname) AGAINST ('*?*' IN BOOLEAN MODE) 
 ORDER BY 'score' Desc 

1)如何按联合分数排序?我的意思是,使用这个sql语句,它为第一次匹配创建一个分数,为第二次匹配创建一个分数。我怎么把这两个分数相加然后按分数排序?

2)我也知道,由于数据不相同,INNER JOIN方式不是最好的。有什么办法可以让我把它取下来吗?

,最后,如果我删除IN布尔模式,当我使用例如sim和first_name是simmos我没有得到结果。事实上,我得到一个空的结果集,而在布尔模式下,如果我把sim,我将得到simmos作为结果。

编辑:我这样回答我的第二个问题

(SELECT `id`,MATCH(first_name,last_name) AGAINST ('?*' IN BOOLEAN MODE) AS score FROM `users` WHERE MATCH(first_name,last_name) AGAINST ('?*' IN BOOLEAN MODE))

联盟(SELECT groupid, MATCH(groupname) AGAINST ('?') AS score FROM groups WHERE MATCH(groupname) AGAINST ('?'))

这改变了一切,因为我不需要联合得分,但仍然有IN布尔模式

的问题

order by 'score'是不正确的,它将尝试通过固定字符串score '订购,而不是您在match ... against中创建的别名。

...
ORDER BY (score + sscore) DESC

相关内容

  • 没有找到相关文章

最新更新