@goldwizard13

Как найти только одно максимально похожее слово в массиве?

Как найти только одно максимально похожее слово в массиве?
есть массив состоящий из ссылок каждая в отдельной строке - $f
в нем ищу по названию из базы
foreach ($itemas as $sql){
$searchword = $sql['game_title'];
$res = preg_grep("#$searchword#", $f);
print_r($res )
}

в результате получаю примерно такое
Array
(
    [796] => http://site/game=Final Fantasy VII
    [797] => http://site/game=Final Fantasy VIII
    [9382] => http://site/game=Final Fantasy VII Remake
)
ArrayArray
(
    [938] => http://site/game=Half-Life: Opposing Force
)

в случае поиска Final Fantasy VII находит три строки, как сделать поиск точнее,?
  • Вопрос задан
  • 103 просмотра
Решения вопроса 2
m03r
@m03r
Можно попробовать вычислять расстояние между строками с помощью функции levenshtein. Ещё можно подумать о том, чтобы бить названия на слова (выкидывая знаки препинания), и считать количество слов по точным совпадениям. По приведённым примерам должно работать не хуже.
Ответ написан
Комментировать
Второй раз прогонять сверяя длину строки. Это максимум что можно сделать на голом пыхе я думаю.

Можно еще попробовать сохранять массив в Mongo, ну или в том же мускуле и юзать встроенные алгоритмы поиска.

Лучший вариант конечно будет Elastic или Sphinx.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы