2

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

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

任何有关此主题的输入将不胜感激。

4

2 回答 2

1

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

于 2012-12-28T10:56:02.227 回答
0

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

搜索也FULLTEXT意味着对字长的限制。不少于 4 个字符(如果我没记错的话)。搜索电话号码不是合适的解决方案。

如果我在电话号码中犯了一个错误,例如:真实号码是333-15-14并且用户输入332-15-14,那么在332之后我们已经有另一个号码,另一个范围,它不会匹配所需的号码。

于 2012-12-28T10:53:08.573 回答