Как получить похожие записи на PHP

Доброго времени суток!
Как можно по заголовку статьи получить схожие записи в языке PHP?
Спасибо.

Похожие темы

Думаю, получить похожие записи можно при помощи функции similar_text(): http://php.net/manual/ru/function.similar-text.php. Функция создана для вычисления степени схожести двух строк. Решение на скорую руку: прогоняем все заголовки через цикл получая процент схожести каждого заголовка и сохраняя результат в отдельный массив. Затем получаем самый большой процент и выводим заголовок на экран. Что то типа того:
// Ищем похожие статьи для заголовка "Не работают динамики"
$nameArticle = 'Не работают динамики';

// Заголовки статей
$titles = [
	'Делаем клетку для кроликов',
	'Как разблокировать смартфон',
	'Как найти похожие записи',
	'Сканер отпечатка пальца не работает',
	'Тихий звук из разговорного динамика'
];

$similar = [];
foreach ($titles as $title)
{
	similar_text($nameArticle, $title, $perc);
	$similar[] = $perc;
}

echo $titles[array_search(max($similar), $similar)];

Результат выполнения:
Тихий звук из разговорного динамика

Чтобы не терять производительность при переборе большого массива заголовков, рекомендую сохранять похожие статьи в кэше сайта.
Slash, как можно сделать вывод вместо одного заголовка, больше, 3, 5, 7 и т. д.?
У меня функция max с многомерным массивом, а данные схожих статей содержатся именно в многомерном массиве. Как профиксить?
Я показал пример из массива, где будут только заголовки, но при получении данных о статьях, например, из Базы Данных, массив будет состоять из массивов, а не из строк... В массивах будут заголовки, идентификаторы и возможно еще какие то данные на статью. Следовательно, массив должен выглядеть примерно так:
$articles = [
	['id' => 1, 'name' => 'Делаем клетку для кроликов'],
	['id' => 2, 'name' => 'Как разблокировать смартфон'],
	['id' => 3, 'name' => 'Как найти похожие записи'],
	['id' => 4, 'name' => 'Сканер отпечатка пальца не работает'],
	['id' => 5, 'name' => 'Тихий звук из разговорного динамика']
];

Далее. Можно добавлять в каждый массив новый элемент, а не создавать новый массив (как я делал первый раз):
foreach ($articles as $key => $article)
{
	similar_text($nameArticle, $article['name'], $perc);
	$articles[$key]['similar'] = $perc;
}

Сортируем массив по элементу similar:
usort ($articles, function($a, $b)
{
	return ($a['similar'] - $b['similar']);
});

И получаем последние три массива:
$articles = array_slice($articles, -3, 3);

Меняйте цифру 3 на нужное количество схожим статьям.

Теперь переменная $articles содержит три массива данных похожих статей.
Если надо, чтобы не выводились темы, процент схожести которых меньше, скажем 50, замените строку:
	$articles[$key]['similar'] = $perc;

На:
	$perc = explode('.', $perc);
	if ($perc[0] < 50)
	{
		unset($articles[$key]);

		continue;
	}

	$articles[$key]['similar'] = $perc[0];