Я пишу базовый инструмент категоризации, который возьмет заголовок, а затем сравните его с массивом ключевых слов. Пример:php match string для нескольких массивов ключевых слов
$cat['dining'] = array('food','restaurant','brunch','meal','cand(y|ies)');
$cat['services'] = array('service','cleaners','framing','printing');
$string = 'Dinner at seafood restaurant';
Существуют ли творческие способы циклического перехода по этим категориям или для просмотра, какая категория имеет большинство совпадений? Обратите внимание, что в массиве «столовая» у меня есть регулярное выражение, чтобы соответствовать вариациям слова candy. Я попытался следующие, но эти списки категорий уже довольно долго, мне интересно, если это лучший способ:
$keywordRegex = implode("|",$cat['dining']);
preg_match_all("/(\b{$keywordRegex}\b)/i",$string,$matches]);
Спасибо, Стив
EDIT: Благодаря @jmathai, я был возможность добавить рейтинг:
$matches = array();
foreach($keywords as $k => $v) {
str_replace($v, '#####', $masterString,$count);
if($count > 0){
$matches[$k] = $count;
}
}
arsort($matches);
Не знаю, php слишком хорошо, но я подозреваю, что хэш будет быстрее, чем регулярное выражение. Если у вас есть одно из значений в качестве реального регулярного выражения (например, cand (y | ies), запустите его как регулярное выражение для объекта, например, поместите значения регулярных выражений в отдельный хэш. – sln