我想选择那些有相似标题的电影。 我发现了这个,但是这种方式没有用,它什么也不给。我想给玩具总动员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