【发布时间】:2009-12-16 13:30:50
【问题描述】:
我希望为小型 PHP/MySQL 应用程序实现模糊搜索。具体来说,我有一个包含大约 2400 条记录的数据库(记录以每年大约 600 条的速度添加,所以它是一个小型数据库)。感兴趣的三个字段是街道地址、姓氏和日期。我希望能够通过其中一个字段进行搜索,并且基本上可以容忍拼写/字符错误。即“123 Main Street”的地址也应与“123 Main St”、“123 Main St.”、“123 Mian St.”、“123 Man St”、“132 Main St”等匹配,名称也应匹配和日期。
我在回答其他类似问题时遇到的主要问题:
- 不可能为每个可能的错误拼写定义同义词,忘记为日期和名称定义同义词。
- Lucene 等对于如此有限的搜索数据集(称其最多 5,000 条记录,每条记录 3 个字段)而言似乎非常重。
- 仅仅使用通配符做某事似乎不合逻辑,因为所有可能的拼写错误。
有什么建议吗?我知道用 MySQL 本地是不可能的,但由于数据集非常有限,我想保持相对简单......也许是一个 PHP 类,得到 all 来自数据库的记录,使用某种比较算法,并返回相似记录的 ID?
谢谢, 杰森
【问题讨论】:
标签: php mysql search fuzzy-search