如何使用mysql缩小搜索结果范围

时间:2014-04-29 17:12:32

标签: mysql

我正在运行大型搜索查询,例如:

WHERE
 'gender' LIKE '%a%'
 OR fname LIKE '%a%'
 OR mname LIKE '%a%'
 OR lname LIKE '%a%'
 OR address LIKE '%a%'
 OR card LIKE '%a%'
 OR email LIKE '%a%'
 OR fname LIKE '%ryan%'
 OR mname LIKE '%ryan%'
 OR lname LIKE '%ryan%'
 OR address LIKE '%ryan%'
 OR card LIKE '%ryan%'
 OR email LIKE '%ryan%'`

它会根据您在搜索框中的位置搜索所有这些内容。

mysql会给我以下行:

http://i.stack.imgur.com/kZSaS.png

Ryan Anthony Okeefe
John Albert Doe
Beau Jacob Diddly
Anthony Quinn Jims
Brooke Wame Gagne

继承我的问题。我想得到最准确的结果因为这个。在这种情况下,它将是第一个结果,因为第一个名称是Ryan,它包含第一个和中间名称中的字母a。有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

它不会太高效,但您可以尝试:

ORDER BY
  (gender LIKE '%a%') +
  (fname LIKE '%a%') +
  (mname LIKE '%a%') +
  (lname LIKE '%a%') +
  (address LIKE '%a%') +
  (card LIKE '%a%') +
  (email LIKE '%a%') +
  (fname LIKE '%ryan%') +
  (mname LIKE '%ryan%') +
  (lname LIKE '%ryan%') +
  (address LIKE '%ryan%') +
  (card LIKE '%ryan%') +
  (email LIKE '%ryan%'`) DESC
LIMIT 1

但是,我会调查Full Text Search Functions