Я работаю над веб-страницей, связанной с моей базой данных, в которой в качестве основной функции используется функция поиска. Пользователи должны искать название компании, чтобы проверить, к какой группе принадлежит компания и т. Д. Однако для скрининга названия компании мне нужна нечеткая логика поиска. Я перепробовал много методов, но проблема в том, что названия компаний длинные. я использовал WHERE NAME LIKE %keywordfromform%
но это не достаточно размыто.
Например:
Актуально: ABC Company 123 ROAD
Поиск пользователя: Road 123 ABC Company
Результат должен появиться, но он не показывает, это приводит к неточности в поиске.
актуально: «ABC Company 123 ROAD»
user = «Road 123 ABC Company» использовать explode
или же preg_split
для разбиения строки в массив. Поскольку вы не знаете порядок, было бы лучше разбить строку запроса и выполнить поиск по слову, а не искать всю строку.
Если тебе надо any
слов
SELECT * FROM table
WHERE column LIKE '%word1%'
OR column1 LIKE '%word2%'
OR column1 LIKE '%word3%'
Если тебе надо all
присутствующих слов
SELECT * FROM table
WHERE column LIKE '%word1%'
AND column1 LIKE '%word2%'
AND column1 LIKE '%word3%'
Других решений пока нет …