5

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

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

我正在使用 django 和 postgresql,但我想这并不重要。

4

3 回答 3

5

这就是记录联动的问题。许多数据库为此提供了基本方法,例如字符级n - gram 匹配,其中将“大学”之类的术语扩展为

[“uni”,“niv”,“ive”,“ver”,“ers”,...]

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

于 2011-10-12T13:56:33.310 回答
1

您可能应该考虑使用专用的搜索引擎。Django-haystack使您能够轻松地将 Solr、Whoosh 或 Xapian 等搜索引擎添加到您的项目中。

于 2011-10-12T14:51:09.103 回答
0

听起来您想在数据库中找到一个与您给出的值有小的词汇距离的值。查找带有前缀的东西相当简单,但拼写错误的单词更难。您可能想阅读Peter Norvig 关于拼写校正器的帖子

于 2011-10-12T13:55:51.347 回答