Задать вопрос
@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 находит три строки, как сделать поиск точнее,?
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 2
m03r
@m03r
Можно попробовать вычислять расстояние между строками с помощью функции levenshtein. Ещё можно подумать о том, чтобы бить названия на слова (выкидывая знаки препинания), и считать количество слов по точным совпадениям. По приведённым примерам должно работать не хуже.
Ответ написан
Комментировать
Второй раз прогонять сверяя длину строки. Это максимум что можно сделать на голом пыхе я думаю.

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

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽