Простой и полностью экипированный метод truncate ():
function truncate($string, $width, $etc = ' ..')
{
$wrapped = explode('$trun$', wordwrap($string, $width, '$trun$', false), 2);
return $wrapped[0] . (isset($wrapped[1]) ? $etc : '');
}
Ваша проблема очень похожа на Рекомендационную систему , где вы хотите рекомендовать правильного клиента, который может ответить на заданный вопрос.
Очень похоже на Фильм / Предметы / Новостная система рекомендаций . Что касается фильмов, у нас есть длинный список фильмов, как рекомендовать лучшие фильмы пользователю на основе его интереса и истории.
Существует множество подходов для решения этой проблемы, обратите внимание, что ваши данные будут очень скудными (матрица агента клиента, где каждая ячейка представляет балл). Вы можете использовать SVD , вот пример по его использованию.
Есть несколько полезных ресурсов первый , второй , которые вы можете сослаться.