поиск mysql с использованием php, как создать (и, или нет) функциональность в строке поиска пользователей? - PullRequest
0 голосов
/ 26 августа 2011

Я выполняю функцию поиска на веб-сайте, чтобы пользователи могли искать значения, хранящиеся в базе данных 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 строки поиска, введенной пользователем.

У кого-нибудь есть идеи о том, как сделать то, что я объяснил?

Если вам нужен какой-либо дополнительный код или лучшее объяснение, просто спросите!

Спасибо !!

1 Ответ

1 голос
/ 26 августа 2011

Вы ищете mysql полнотекстовый поиск с ограничением, что по умолчанию минимальная длина слова составляет 4 символа, поэтому вы не можете искать «can», если вы не можете редактировать конфигурацию сервера,

Кроме того, у него есть политика «стоп-слов», которая не дает результатов для слов, которые появляются в более чем 50% всех данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...