2011-10-12 71 views
5

我需要MySQL代碼來檢查通過表單提交的文本與存儲在MySQL數據庫中的多個文本之間的相似性百分比。用於檢查兩個文本之間相似性百分比的MySQL函數

我正在尋找能夠像PHP的similar_text()函數一樣工作的MySQL存儲過程。已經有MySQL Levenshtein距離程序,但這還不夠。

當用戶提交的算法應該相似提交的案文給出的回報率在數據庫中的任何條目中的文本(它會比較只有一個數據庫列),例如從具有相似性> 40%數據庫返回的所有條目與用戶提交的文本。

E.g表

TABLE - Articles 
id, article_body, article_title 

代碼應該返回有相似比例> 40與文本(article_body)用戶已提交%(或其他給定值)的所有行。

回答

0

我覺得算法應該是這樣..

  • 第一(使用LENGTH)計算給定單詞的長度。
  • 然後搜索特定列字(使用INSTR或任何特定功能)
  • 現在計算每一個匹配字的長度,並用簡單的數學

爲如:我想搜索「地獄 '相匹配的超過50%和我的數據庫有2個匹配的單詞' 的Hello World '和' 地獄男爵'

長度(地獄)= 4
長度(世界你好)= 11
長度(地獄男爵)= 7

爲世界你好(11-4)/ 11 = 63.63%
爲地獄男爵(7- 4)/ 7 = 42.85%

現在只有Hello World將根據上述計算重新進行修正。

希望它能工作..

1

我會在應用程序中執行此操作。

可能導致SOUNDEX功能將幫助您 -

SELECT SOUNDEX('Hello'), SOUNDEX('Hello world'), SOUNDEX('hellboy'); 
+------------------+------------------------+--------------------+ 
| SOUNDEX('Hello') | SOUNDEX('Hello world') | SOUNDEX('hellboy') | 
+------------------+------------------------+--------------------+ 
| H400    | H4643     | H410    | 
+------------------+------------------------+--------------------+ 
+0

但是讓你要比較那些你從SOUNDEX結果字符串按百分比計算的區別...和圓繼續。 – Matmarbon

相關問題