我想選擇那些有相似標題的電影。 我發現了這個,但是這種方式沒有用,它什麼也不給。我想給玩具總動員2,玩具總動員3和其他具有類似標題像玩具soldielrs等如何編寫查詢來選擇相似的標題?
$title = "Toy Story";
$query = mysql_query("SELECT title, year, poster, LEVENSHTEIN_RATIO(".$title.", title) as textDiff FROM movies HAVING textDiff > 60");
我可以在PHP中使用該功能比較字符串:
static public function string_compare($str_a, $str_b)
{
$length = strlen($str_a);
$length_b = strlen($str_b);
$i = 0;
$segmentcount = 0;
$segmentsinfo = array();
$segment = '';
while ($i < $length)
{
$char = substr($str_a, $i, 1);
if (strpos($str_b, $char) !== FALSE)
{
$segment = $segment.$char;
if (strpos($str_b, $segment) !== FALSE)
{
$segmentpos_a = $i - strlen($segment) + 1;
$segmentpos_b = strpos($str_b, $segment);
$positiondiff = abs($segmentpos_a - $segmentpos_b);
$posfactor = ($length - $positiondiff)/$length_b;
$lengthfactor = strlen($segment)/$length;
$segmentsinfo[$segmentcount] = array('segment' => $segment, 'score' => ($posfactor * $lengthfactor));
}
else
{
$segment = '';
$i--;
$segmentcount++;
}
}
else
{
$segment = '';
$segmentcount++;
}
$i++;
}
// PHP 5.3 lambda in array_map
$totalscore = array_sum(array_map(function($v) { return $v['score']; }, $segmentsinfo));
return $totalscore;
}
卻怎麼也我在SELECT查詢或其他方式進行比較?
「LEVENSHTEIN_RATIO」不是MySQL函數 - 您應該自己添加DB。 –
但您可以使用「LIKE」進行查詢,例如:'SELECT title,year,poster FROM movies where title LIKE'%「。$ title。」%'「' –
在mysql中有* SOUNDEX()* http ://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_soundex – donald123