2014-03-24 15 views
0

我想知道Google如何进行搜索,比方说我的数据库中有一条叫做St. John's Road的道路,我在Ajax的自动sugestion字段中键入...Mysql:如何在执行类似字符串之前去除列中所有字母和数字

圣约翰

我怎样才能获得自动的选择表明是喜欢的内容,但不使用的道路。或“数据库

如果我是开始键入...

圣约翰

那么它当然会显示为我所用的建议。

可以这样做吗?

我的字段有道路的正确名称,我使用utf8_general_ci作为道路名称字段和LIKE方法来获得结果。

+0

如果你想要这样做,它会导致相当不好的表现。最好有一个额外的列,它的格式为'stjohnsroad'或其他类似的值,并且有一个索引并用于搜索(对搜索关键字应用相同的处理之后)。 – CBroe

+0

虽然从数据库检索数据,你可以删除这些字符使用你的后端lang像php –

回答

0

你在服务器上用什么来连接你的MySQL服务器?通常人们使用类似PHP的东西来处理数据库和用户端HTML之间的信息。

要做到这一点纯粹是在MySQL(这我不知道是你想达到的目的),你可以使用 UPDATE table SET field_name = replace(replace(field_name, '.', ''), '"'. ' ');

这将没有白色空间相同,周期更换周期与空白只有一个空间。

在我看来,在PHP中使用这种东西比较容易,您可以使用str_replace

你会最终使用

$address = ($_POST['address']); $address = str_replace('.', '', $address);

这这种方式可以在MySQL编写LIKE声明之前完成。你可以阅读一些在此处详细了解LIKE声明:MySQL Like Operator

其中从<input>元素是用户输入的地址返回$_POST['address'],并通过形式提交。在ajax中这样做和自动完成/自动选择会更困难一些,因为在输入动作时发送类似的AJAX请求并不是微不足道的。当然有人可以帮忙解释一下,但是我唯一一次完成一个基于AJAX的autosuggest,我已经通过PHP预装了MySQL中的数组。我相信谷歌不这样做。

+0

是的,我用阿贾克斯检索结果,所以使用除字母,数字和空格以外的所有条目似乎是更好的选择。至于有一个单独的专栏,只有字母,数字和空格。这似乎反作用,或者我错过了这一点。我目前只有不到50000个参赛作品,并且正在增长。我了解该方法或使用不同的列进行搜索,但这会导致表格稍微低于目前的两倍。 – jasonc310771

+0

但是,当用户输入搜索信息时,您可以忽略'.'和/或在查询服务器时将其去掉。你不应该修改你的数据库。 – dcclassics

+0

因此,如果我从输入的文本中删除所有字母和数字,并用该短语查询数据库,它仍然会返回说... 圣约翰路(这是我的表中的文字) 即使他们输入... st johns 我无法尝试此刻,因为我的主机正在迁移到另一台服务器。 – jasonc310771

相关问题