我的 php 中有一个查询,如下所示:
$query ="
SELECT ydzdn_terms.term_id,ydzdn_terms.name
FROM ydzdn_terms
INNER JOIN ydzdn_term_taxonomy on
(ydzdn_terms.term_id=ydzdn_term_taxonomy.term_id )
WHERE ydzdn_term_taxonomy.taxonomy='location'
and ydzdn_terms.name like '%" . $_GET["keyword"] . "%'
ORDER BY ydzdn_terms.name ASC
LIMIT 0,5";
它根据用户输入的内容和文本中任意位置的匹配来输出结果,因为我们最多只能显示 5 个结果。字符串长度总是较短的最重要的结果将被隐藏。 更清楚地说,我们的数据库是关于包含城市和州的位置和街道名称,例如: 南大街,维克森林,北卡罗来纳州
但我们也有城市名称本身,例如:wakeforest,NC
我希望当有人输入:唤醒森林时它会出现在列表顶部
我需要这个sql作为首先输出最短字符串或根据第一个字符的最相关性对结果进行排序的方式
请尝试以下查询(未经测试)。
$query = "
SELECT ydzdn_terms.term_id, ydzdn_terms.name
FROM ydzdn_terms
INNER JOIN ydzdn_term_taxonomy ON (ydzdn_terms.term_id = ydzdn_term_taxonomy.term_id)
WHERE ydzdn_term_taxonomy.taxonomy = 'location'
AND ydzdn_terms.name LIKE '%" . $_GET["keyword"] . "%'
ORDER BY
LOCATE('" . $_GET["keyword"] . "', ydzdn_terms.name),
LENGTH(ydzdn_terms.name) ASC
LIMIT 0, 5";
问候,