Algorithm 一个英语句子与数据库中存储的一组英语句子的模糊匹配

Algorithm 一个英语句子与数据库中存储的一组英语句子的模糊匹配,algorithm,fuzzy-search,Algorithm,Fuzzy Search,一个数据库表中大约有1000条记录。有一个名为title的列,用于存储文章的标题。在插入记录之前,我需要检查该表中是否已经存在具有类似标题的文章。如果是这样,我将跳过 执行这种模糊匹配的最快方法是什么?假设句子中的所有单词都能在英语词典中找到。如果句子第1句中的70%个词可以在句子2中找到,我们认为它们是匹配的。理想情况下,该算法可以为每个句子预先计算一个值,以便将该值存储在数据库中。对于1000条记录,做一些愚蠢的事情,只需迭代所有记录就可以了(假设字符串不太长,并且没有太多查询)。只需从数据

一个数据库表中大约有1000条记录。有一个名为
title
的列,用于存储文章的标题。在插入记录之前,我需要检查该表中是否已经存在具有类似标题的文章。如果是这样,我将跳过


执行这种模糊匹配的最快方法是什么?假设句子中的所有单词都能在英语词典中找到。如果句子第1句中的70%个词可以在句子2中找到,我们认为它们是匹配的。理想情况下,该算法可以为每个句子预先计算一个值,以便将该值存储在数据库中。

对于1000条记录,做一些愚蠢的事情,只需迭代所有记录就可以了(假设字符串不太长,并且没有太多查询)。只需从数据库中取出所有标题,然后根据它们与给定字符串的距离对它们进行排序(例如,您可以使用此度量)

进行近似字符串匹配的一种更为奇特的方法是预先计算所有字符串的n-gram,并将其存储在数据库中(一些系统本机支持此功能)。从性能角度来看,这无疑会带来更好的扩展,但这可能意味着需要更多的工作:


您可以阅读令牌值存储的正向/反向索引,以获得更快的搜索结果。我个人更喜欢反向索引,它存储令牌(key)到值(这里是title)的散列映射

每当你写一篇新文章时,比如一个新的stackoverflow问题,标题中的标记都会被搜索以映射所有可用的标题

为了优化结果,即获得结果的模糊逻辑,您可以根据搜索的标记中出现的最大数量对标题进行排序。例如,如果t1、t2和t3引用标记“what”是“love”,并且在所有标记映射中都存在标题“what this love is for”,那么它将位于最上面

你可以玩得更多。我希望这种方法更简单、更吸引人