gpt4 book ai didi

PHP/MySQL 小规模模糊搜索

转载 作者:可可西里 更新时间:2023-11-01 07:01:49 26 4
gpt4 key购买 nike

我想为一个小型 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 native 完成,但由于数据集非常有限,我想保持它相对简单......也许是一个 PHP 类,所有 来自数据库的记录,使用某种比较算法,并返回相似记录的 ID?

谢谢,杰森

最佳答案

Razzie 的回答(或使用 Damerau–Levenshtein )根据与搜索关键字的接近程度对候选匹配列表进行排名。 (注意:如果键是“12 Main St”,那么“13 Main St”与“12 Moin St”的打字距离相同,但您可能希望将其排在较低的位置,甚至排除它,如 11 和 22 Main St等等)

但是您如何选择规模可控的候选人列表进行排名?

一种方法是为您要搜索的字符串中的每个单词计算变音位值(或多个值,使用双变音位)。使用包含原始字符串的行的 ID 将这些变音位中的每一个保存在另一个表中。然后,您可以使用 LIKE 'key%' 快速搜索这些变音位值,其中 key 是搜索文本中单词的变音位。

查看关于 this thread 的建议答案.它非常简洁,应该适用于不大的数据库。

关于PHP/MySQL 小规模模糊搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1914671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com