python - 数据库中的近似搜索

标签 python database django postgresql fuzzy-search

我有一个包含机构(大学、医院等)列表的大型数据库。机构名称来源不同,同一机构的拼写可能不同。例如,它们可能拼写错误,或者单词可以缩短(“uni”、“univ”或“university”)

给定一个我需要插入数据库的名称,是否有实用的方法来查找该机构是否已在数据库中?这不是一个研究项目,所以我正在寻找一个相当快的解决方案。

我正在使用 django 和 postgresql,但我想这无关紧要。

最佳答案

这是record linkage的问题.许多数据库为此提供了基本方法,例如字符级 n-gram 匹配,其中像“大学”这样的术语被扩展为

["uni", "niv", "ive", "ver", "ers", ...]

对于 n = 3。数据库将索引所有这样的 n-grams 并允许使用某种加权匹配进行搜索。 pg_trgm似乎正是这样做的,试试吧。

关于python - 数据库中的近似搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7741082/

相关文章:

带有 Makefile 的 `extra` 包的 Python setuptools/distutils 自定义构建

sql - 如何选择过去 X 个月在一周的 X 天插入的结果?

javascript - Ember 模型与使用 REST 作为 JSON 接收的数据 Hook

django - 使用 django 和 mongoengine 时出现 NotUniqueError

python - 无法将 python 类型 str 转换为列表数组

python - Django 1.5 : How do I add a new model field to an existing table using South without having to drop a table?

sql - 在 firebird 中使用 `LIKE :varname || ' %'` 上的索引

c - 根据时间在数据库(MYSQL)中排队数据

python - 带有注册额外字段的 Django 社交身份验证

python - Excel 删除了 Pandas 设置的公式,但手动设置公式会使公式生效