Я работаю над проектом с участием PHP и MySQL. Я признаю, что я довольно новичок в обоих.
У меня есть таблица, в которой есть некоторые названия компаний, скажем, CocaCola, если пользователь ищет CocaCola, мне нужно прочитать некоторую информацию из таблицы.
У меня вопрос, как я могу заставить его работать, даже если пользователь пишет CocaCola Company, или что-нибудь еще, что соответствует?
Я уже реализовал SOUNDEX, который дает базовую обработку ошибок, но теперь я хотел бы кое-что, чтобы я мог проверить, совпадает ли имя, которое находится внутри моей таблицы (CocaCola) со строкой, исходящей от пользователя («CocaCola Company» включает в себя «CocaCola») ,
Я нашел утверждение «LIKE»
WHERE Name LIKE %$name%
но кажется, что это работает наоборот, он может определить, пишет ли пользователь что-то меньшее, но как определить, пишет ли он что-то большее? (что-то вроде
WHERE %Name% LIKE $name
если он вообще существует).
Если вы действительно хотите проверить, что пользователь пишет меньше, почему бы не создать предложение, которое проверяет длину строки поиска, и если это, скажем, 12 или более символов, используйте SUBSTRING
функция для поиска первых 8 символов, введенных пользователем.
WHERE NAME LIKE CONCAT('%', SUBSTRING($searchString, 8), '%')
Похоже, что ваш проект может действительно выиграть от надежной библиотеки поиска. Вы пробовали смотреть на библиотеку или плагин, похожий на Apache Lucene? Я знаю, что Lucene написан на Java, но его поиск может помочь вам найти мощный плагин, написанный на языке, подходящем для вашего проекта.
Других решений пока нет …