Добрый вечер,как сравнивать части 2 строки в PHP
Я столкнулся с небольшой проблемой при попытке построить небольшой алгоритм поиска.
У меня есть таблица базы данных, содержащая имена видеоигр и имена программ. Теперь я хотел бы добавить новые предложения, извлекая и разбор XML-файлов на других серверах. Проблема заключается в следующем:
Как сравнить строки для имени продукта, чтобы он работал, даже если имя предложения не совпадает с именем продукта, хранящимся в моей базе данных, до 100%?
В качестве примера я в настоящее время с помощью этого PHP + SQL коды для сравнения строк:
$query_GID = "select ID,game from gkn_catalog where game like '%$batch_name%' or meta like '%$batch_name%' ";
Я в настоящее время использую как оператор в сочетании с двумя дикими картами, чтобы сравнить имя предложения (batch_name) с именем в базе данных (игра).
Я хотел бы знать, как я могу улучшить это как этот метод не очень безотказный или что вы хотите назвать это, что случается:
Если база данных говорят название игры:
Deus Ex Human Revolution Missing Link
и batch_name говорит:
Deus Ex Hum революция Missing Link DLC
результат будет пустым/неправильно/ложь ... ну не найти игру в моей базе данных на всех.
То же самое что-то вроде этого:
Database = Lego Star Wars The Complete Saga
batch_name = Lego Звездные войны : Полная Сага
Результат: Ложные
Is есть лучший способ выполнить SQL-запрос?
Или как я могу попытаться заставить этот запрос работать, чтобы он мог иметь дело со строками, которые имеют специальные символы (например, -minus- & [скобки])
и/или символы, которые не включены в имена в базе данных (например, DLC , CE ...)?
Исследуйте поиск FULLTEXT и используйте функцию MATCH(). http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html –
это также может помочь - http://www.artfulsoftware.com/infotree/queries.php?&bw=1280 # 552 – splash21
@ splash21 Я не знал, что у MySQL теперь есть Левенштейн; отличная идея! – Kato