我正在寻找使用PHP和MySQL数据库构建一个yellowpages-esque搜索引擎。该数据库显然存储名称,地址,最重要的是电话号码。我将提示用户选择他们正在执行的搜索类型,以便我可以准确地清理和处理输入。对于姓名/地址,我最有可能实施全文搜索,因为它似乎最合适?
但是,对于电话号码,我将尽可能干净地存储它们(仅限数字字符,没有空格 - 即。(07)55 200 314将存储为0755200314)。我想知道是否有纯粹搜索数字的最佳实践(即简单的LIKE'%$ search%')?我的理解是MySQL全文搜索不合适,因为它要求用户输入整个电话号码而不仅仅是部分(我打算提供匹配)。
非常感谢有关此主题的任何意见。
答案 0 :(得分:1)
不要重新发明轮子:使用生产就绪且经过良好测试的解决方案,如http://sphinxsearch.com/或其他一些搜索工具。您的数据库看起来很少变化,但规模很大 - 工具会将其编入索引一次,然后允许您为部分匹配编写健壮的查询,忽略拼写错误,复杂查询以及按自定义权重排序的结果等等。
答案 1 :(得分:0)
对于phone LIKE '2134%'
,您不需要FULLTEXT
索引。它使用通常的BTREE
索引。这样,用户应该从一开始就输入正确的电话号码。
此外,FULLTEXT
搜索意味着对字长的限制。不少于4个字符(如果我没有弄错)。而且搜索电话号码并不合适。
如果我在一个电话号码中犯了错误:真正的号码是 333-15-14 而用户输入 332-15-14 ,就在之后332 我们已经有另一个数字,另一个范围,它与期望的数字不匹配。