【发布时间】:2012-05-29 13:44:24
【问题描述】:
MySQL
表格:城市
+----+----------+
| id | city |
+----+----------+
| 1 | New York |
+----+----------+
表格:车站
+----+--------------+---------+
| id | name | city_id |
+----+--------------+---------+
| 1 | Woodlawn | 1 |
+----+--------------+---------+
| 2 | Mosholu Pkwy | 1 |
+----+--------------+---------+
PHP
$string = mysql_real_escape_string('woodlawn new york');
$a = mysql_query("
SELECT s.id FROM cities AS c, stations AS s
WHERE CONCAT_WS(' ', s.name, c.city) LIKE '%$string%' AND c.id = s.city_id
");
while($b = mysql_fetch_assoc($a))
{
echo $b['id'];
}
问题
上面的例子可以正常工作,但是,当我尝试搜索时:
$string = mysql_real_escape_string('mosholu new york');
我得到 0 个结果,除非我明确搜索 mosholu pkwy new york。
可能的选择?
显然我不能将FULLTEXT 搜索与CONCAT_WS 结合使用。而且我真的很想保持表的结构不变,一张表用于cities,一张用于stations。
那么,唯一的选择是在stations 表中添加第四列,其中包括车站名称和城市名称,然后对其进行FULLTEXT 搜索?
但是,如果我必须更新城市名称,然后还要为stations 表中的所有行更改它,那只会让人头疼。
【问题讨论】:
标签: mysql full-text-search concat-ws