我有一大套查詢,並使用levenshtein來計算拼寫錯誤,現在levenshtein導致mysql獲取完整的cpu時間。 我的查詢是在UNION語句中的全文搜索+ levenshtein。 sql1是我當前的查詢,sql2是隻有全文搜索,它是快速的,並沒有使用太多的CPU時間,最後一個leventhein哪一個會達到頂峯!levenshtein替代
你們中的任何一個人都有另一種獲得錯別字的方法嗎? 請不要回答規範化的數據,我想到了這一點,但不適用於我的數據,因爲我不能預先進行匹配/計算,並創建一個單獨的索引表。
$sql1 = "(SELECT * FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='' AND MATCH(prop_value) AGAINST ('+usama bin laden' IN BOOLEAN MODE)) UNION (SELECT s.* FROM (SELECT levenshtein(prop_value, 'usama bin laden') AS dist, sanction_id, prop_type, prop_value FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='') s WHERE dist < 3) ORDER BY sanction_id";
$sql2 = "SELECT * FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='' AND MATCH(prop_value) AGAINST ('+usama bin laden' IN BOOLEAN MODE) ORDER BY sanction_id";
$sql3 = "SELECT s.* FROM (SELECT levenshtein(prop_value, 'usama bin laden') AS dist, sanction_id, prop_type, prop_value FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='') s WHERE dist < 3";