用PHP / MySQL搜索电话号码 - 最佳实践?

时间:2012-12-28 10:47:00

标签: php mysql full-text-search search-engine

我正在寻找使用PHP和MySQL数据库构建一个yellowpages-esque搜索引擎。该数据库显然存储名称,地址,最重要的是电话号码。我将提示用户选择他们正在执行的搜索类型,以便我可以准确地清理和处理输入。对于姓名/地址,我最有可能实施全文搜索,因为它似乎最合适?

但是,对于电话号码,我将尽可能干净地存储它们(仅限数字字符,没有空格 - 即。(07)55 200 314将存储为0755200314)。我想知道是否有纯粹搜索数字的最佳实践(即简单的LIKE'%$ search%')?我的理解是MySQL全文搜索不合适,因为它要求用户输入整个电话号码而不仅仅是部分(我打算提供匹配)。

非常感谢有关此主题的任何意见。

2 个答案:

答案 0 :(得分:1)

不要重新发明轮子:使用生产就绪且经过良好测试的解决方案,如http://sphinxsearch.com/或其他一些搜索工具。您的数据库看起来很少变化,但规模很大 - 工具会将其编入索引一次,然后允许您为部分匹配编写健壮的查询,忽略拼写错误,复杂查询以及按自定义权重排序的结果等等。

答案 1 :(得分:0)

对于phone LIKE '2134%',您不需要FULLTEXT索引。它使用通常的BTREE索引。这样,用户应该从一开始就输入正确的电话号码。

此外,FULLTEXT搜索意味着对字长的限制。不少于4个字符(如果我没有弄错)。而且搜索电话号码并不合适。

如果我在一个电话号码中犯了错误:真正的号码是 333-15-14 而用户输入 332-15-14 ,就在之后332 我们已经有另一个数字,另一个范围,它与期望的数字不匹配。