我想你只需要全文搜索。
如果這不適合你,你只有一次機會解決這個問題:緩存結果。 所以你就不必爲每個請求
解析記錄3bil反正在這裏你可以怎麼做:
$result = array();
$sql = "SELECT * FROM TABLE";
while($row = ...) {
$result[] = $row; //> Append the current record
}
現在的結果包含表中的所有行。
在這一點上你說你想similar_text()
所有列彼此。
要做到這一點,並緩存結果,你至少需要一張表(正如我在評論中所說)。
//> Starting calculating the similarity
foreach($result as $k=>$v) {
foreach($result as $k2=>$v2) {
//> At this point you have 2 rows, $v and $v2 containing your column
$similarity = 0;
$similartiy += levensthein($v['column1'],$v2['column1']);
$similartiy += levensthein($v['column2'],$v2['column2']);
//> What ever comparison you need here between columns
//> Now you can finally store the result by inserting in a table the $similarity
"INSERT DELAYED INTO similarity (value) VALUES ('$similarity')";
}
}
兩件事情你必須注意:
我不是真的在搜索,我需要看看1列數據是否比任何其他數據列的數據多90%。 – Petah 2011-05-31 23:46:07
您是否需要將每列與所有其他列進行比較?或者你只有1列1列,你必須與其他人比較? – dynamic 2011-05-31 23:49:02
每一行的列對列的列。 – Petah 2011-05-31 23:59:09