Я выполняю функцию поиска на веб-сайте, чтобы пользователи могли искать значения, хранящиеся в базе данных mysql.
Как пример:
В этой таблице два продукта.
Один из них имеет значение описания "банка кокса 330 мл", а другой - банка спрайта 330 мл.
Теперь при поиске этих предметов, скажем, пользователь вводит банку в качестве своей строки. Оба элемента отображаются, поскольку они оба могут содержать.
Если пользователь вводит кокс, кола будет возвращена.
А теперь представьте, что у вас в банке была каждая банка содовой, каждая в виде продукта.
Функциональность поиска, подобная этой, будет немного хлопотной. скажем, пользователь хотел только два продукта, это банки с коксом и спрайтом.
Им нужно будет поискать что-то вроде "кока-кола ИЛИ спрайт И банка И 330 мл"
Это должно вернуть только два продукта, использованных в моем примере.
Это не проблема, с которой я сталкиваюсь. Моя функция поиска работает как мой оригинальный пример. Я пытаюсь включить какую-то функциональность или нет, и не совсем решил, как это все должно сработать.
В настоящее время поиск «банка кокса» будет возвращать только результаты, содержащие кокс и банку. Но если я искал "coke sprite can", результаты не будут возвращены, так как не будет результатов, которые содержат все 3 слова, использованных в строке.
Вот запрос:
$dataQuery = "
SELECT *
FROM `products`
WHERE upper(`desc`)
LIKE '%"
. implode("%'
AND upper(`desc`)
LIKE '%",
$keywords_array)
. "%'
ORDER BY `desc`";
$keywords_array
- массив, созданный из введенной пользователем строки поиска, после проверки код для этого выглядит следующим образом:
$find = strtoupper($find);
$find = strip_tags($find);
$find = trim ($find);
$_SESSION['find'] = $find;
$keywords_array = explode(' ', $find);
$find
- строка, заданная значением post строки поиска, введенной пользователем.
У кого-нибудь есть идеи о том, как сделать то, что я объяснил?
Если вам нужен какой-либо дополнительный код или лучшее объяснение, просто спросите!
Спасибо !!