2011-06-26 23 views
0

數據庫表中有大約1000條記錄。有一個名爲title的列用於存儲文章的標題。在插入記錄之前,我需要檢查該表中是否存在具有相似標題的文章。如果是這樣,我會跳過。存儲在數據庫中的英語句子與一組英語句子的模糊匹配

執行這種模糊匹配的最快方法是什麼?假設句子中的所有單詞都可以在英語詞典中找到。如果句子#1中的70%的單詞可以在句子#2中找到,我們認爲它們是匹配的。理想情況下,算法可以預先計算每個句子的值,以便將值存儲在數據庫中。

回答

1

對於1000條記錄,做愚蠢的事情,只是迭代所有的記錄可以工作(假設字符串不是太長,你沒有被太多的查詢擊中)。只需將所有標題從數據庫中提取出來,然後根據它們與給定字符串的距離對它們進行排序(例如,您可以使用Levenshtein distance來計算此度量標準)。

一種比較合適的字符串匹配的方法是預先計算所有字符串的n元並將它們存儲在數據庫中(某些系統本身支持此功能)。這肯定會變得更好的性能明智的,但它可能意味着更多的工作:

http://en.wikipedia.org/wiki/N-gram

1

您可以向前讀了/反向令牌的索引 - 值存儲的速度越來越快的搜索結果。我個人更喜歡反向索引,它將令牌(鍵)的哈希映射存儲爲值(此處標題)。

每當你寫一篇新文章就像一個新的stackoverflow問題,標題中的標記將被搜索映射所有可用的標題。

要優化結果,即獲得結果的模糊邏輯,您可以按照搜索到的標記中最大出現次數對標題進行排序。例如,如果t1,t2和t3指的是代幣的「什麼」是「愛」,那麼標題「這個愛是什麼?」。將存在於所有的令牌映射中,它將被放置在最頂端。

你可以玩這個更多。我希望這種方法更簡單和有吸引力。