我有一個Postgres數據庫語句的表。該表被稱爲sentences
和保存了一句每一行的列稱爲sentence
。Postgres的選擇有個匹配行,排序百分比
如何將句子與給定句子進行比較,並返回其中包含60%的單詞(或甚至更好的單詞根部)匹配的單詞,然後根據匹配的質量對結果進行排序?
理想情況下,90%的匹配會來之前70%的匹配和50%的比賽不會顯示在所有。
理想的情況下,將不包括標點符號爲好,但這不是必須的。
我有一個Postgres數據庫語句的表。該表被稱爲sentences
和保存了一句每一行的列稱爲sentence
。Postgres的選擇有個匹配行,排序百分比
如何將句子與給定句子進行比較,並返回其中包含60%的單詞(或甚至更好的單詞根部)匹配的單詞,然後根據匹配的質量對結果進行排序?
理想情況下,90%的匹配會來之前70%的匹配和50%的比賽不會顯示在所有。
理想的情況下,將不包括標點符號爲好,但這不是必須的。
退房的fuzzystrmatch模塊,尤其是levenshtein
功能。這將計算兩個字符串之間的「距離」,較低的值表示它們更類似。它通常在兩個單詞之間使用,但只要句子不太長(每個參數的最大字符串長度爲255個字節),也可以將它們與句子一起使用。
然後你會被levenshtein
功能上升的輸出進行排序,對結果從最要至少相似。
如果要排除標點符號,請使用正則表達式在字符串上調用regexp_replace
以刪除所需的所有字符,並用空字符串替換它,然後將這些返回值用作參數levenshtein
。
我會用一些真正的編程語言來做,而不是SQL。這種任務會導致長時間不可讀的SQL查詢。 –
@IlyaKogan我需要查詢postgresql數據庫,但我不想每次查詢時都下載整個表 – maxhud