Я хотел бы выбрать те фильмы, которые имеют похожие названия. Я нашел это, но таким образом он не работает, он ничего не дает. Я хотел бы дать История игрушек 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 - вы должны добавить его самостоятельно. –
Но вы можете использовать «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