2015-07-20 10 views
-1

Я работаю над проектом с участием PHP и MySQL. Я признаю, что я довольно новичок в обоих.MySQL, как обрабатывать варианты имен? Как проверить, включено ли значение в строку?

У меня есть таблица с названиями компаний, скажем, CocaCola, если пользователь ищет CocaCola, мне нужно прочитать некоторую информацию из таблицы. Мой вопрос: как я могу заставить его работать, даже если пользователь пишет CocaCola Company или что-то еще, что соответствует?

Я уже реализовал SOUNDEX, который дает базовую обработку ошибок, но теперь мне нужно что-то, что позволяет мне проверить, соответствует ли имя, которое находится внутри моей таблицы (CocaCola) строке, исходящей от пользователя («CocaCola Company» включает "Кока-Кола").

Я нашел «LIKE» заявление

WHERE Name LIKE %$name% 

однако, кажется, это работает так, как вокруг, он может обнаружить если пользователь пишет что-то меньше, но как если бы он, чтобы обнаружить/она пишет что-то еще? (что-то вроде

WHERE %Name% LIKE $name 

если оно есть).

+0

LIKE может обнаружить как все больше, так и меньше ... вам нужно объяснить свой вопрос намного лучше. – developerwjk

+0

Вы начнете с сбора списка синонимов. После этого вы можете задать другой вопрос. –

+0

Почему вы хотите поддерживать такую ​​функциональность? Если у вас есть запись «CocaCola», и вы хотите поддержать «CocaCola Company», то по той же логике любой пользователь может придерживаться любой тарабарщины после фактического значения, которое вы храните, то есть они получат одинаковые результаты для 'CocaCola', CocaCola Company' и 'CocaCola 12345123gsfhfha0502 $$$$$$$ ------ 111111111'. Если они пишут глупые вещи, а у вас их нет, то это все - они не получают никаких результатов. –

ответ

0

Если вы действительно хотите, чтобы пользователь писал меньше, почему бы не создать предложение, которое проверяет длину строки поиска, и если оно имеет 12 или более символов, используйте функцию SUBSTRING для поиска первых 8 символов, вводимых пользователем ,

WHERE NAME LIKE CONCAT('%', SUBSTRING($searchString, 8), '%') 

Похоже, что ваш проект может действительно выиграть от надежной библиотеки поиска. Вы пробовали посмотреть библиотеку или плагин, похожий на Apache Lucene? Я знаю, что Lucene написана на Java, но поиск его может помочь вам найти мощный плагин, написанный на языке, подходящем для вашего проекта.