Как использовать MySQL MATCH AGAINST IN BOOLEAN MODE, чтобы вернуть результаты хотя бы для одного соответствующего ключе ⇐ Php
Как использовать MySQL MATCH AGAINST IN BOOLEAN MODE, чтобы вернуть результаты хотя бы для одного соответствующего ключе
У меня есть этот запрос для поиска записей базы данных на основе ключевых слов, введенных в поле поиска.
// функция для получения ключевых слов для поиска по URL $q = Furl($_GET['q']); $sExp = preg_split('/\s+/',$q); $secure_keywords = массив(); foreach ($sExp как $key=>$keyword){ если (strlen($ключевое слово) >= 3){ // обрезаем слова длиной менее 3 символов $secure_keywords[] = $ключевое слово; } } $kwords = count($secure_keywords); foreach ($secure_keywords как $key=>$keyword) { // функция для предотвращения SQL-инъекций $keyword = sql_proof($keyword); $query="ВЫБРАТЬ * ИЗ списков, ГДЕ СООТВЕТСТВУЕТ (meta_keywords) AGAINST ('$keyword' В БУЛЕВОМ РЕЖИМЕ) ORDER BY id"; } При использовании 2 или более слов, если хотя бы 1 слово написано с ошибкой, запрос не вернет никаких результатов (даже если результаты существуют для остальных слов во введенных ключевых словах). Например, я ввожу слово «хорошо» и получаю как минимум 1 результат, но если я использую «хороший момент», запрос не возвращает никаких результатов, поэтому он полностью игнорирует результаты соответствия для слова «хорошо». Есть ли способ, чтобы запрос соответствовал результатам, если во введенных ключевых словах есть хотя бы одно подходящее слово? Спасибо
У меня есть этот запрос для поиска записей базы данных на основе ключевых слов, введенных в поле поиска.
// функция для получения ключевых слов для поиска по URL $q = Furl($_GET['q']); $sExp = preg_split('/\s+/',$q); $secure_keywords = массив(); foreach ($sExp как $key=>$keyword){ если (strlen($ключевое слово) >= 3){ // обрезаем слова длиной менее 3 символов $secure_keywords[] = $ключевое слово; } } $kwords = count($secure_keywords); foreach ($secure_keywords как $key=>$keyword) { // функция для предотвращения SQL-инъекций $keyword = sql_proof($keyword); $query="ВЫБРАТЬ * ИЗ списков, ГДЕ СООТВЕТСТВУЕТ (meta_keywords) AGAINST ('$keyword' В БУЛЕВОМ РЕЖИМЕ) ORDER BY id"; } При использовании 2 или более слов, если хотя бы 1 слово написано с ошибкой, запрос не вернет никаких результатов (даже если результаты существуют для остальных слов во введенных ключевых словах). Например, я ввожу слово «хорошо» и получаю как минимум 1 результат, но если я использую «хороший момент», запрос не возвращает никаких результатов, поэтому он полностью игнорирует результаты соответствия для слова «хорошо». Есть ли способ, чтобы запрос соответствовал результатам, если во введенных ключевых словах есть хотя бы одно подходящее слово? Спасибо
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение