Какой алгоритм поиска я должен использовать, чтобы дать результаты, когда пользователь ищет название книги?
Если существует книга, название которой необходимо вернуть, в противном случае должны отображаться названия книг, которые находятся рядом с ней.
В первом случае проще просто найти строку. Мне нужно, как решить второй случай, который использует большинство сайтов.
Таблица книг содержит поля категории, класса и названия. Я попробовал приведенный ниже код и получаю результаты, когда даю точное название. Я хочу, чтобы система давала названия, которые тесно связаны между собой.
$title=isset($_GET['title'])?$_GET['title']:NULL;
//$code=isset($_GET['code'])?$_GET['code']:NULL;
$class=isset($_GET['class'])?$_GET['class']:NULL;
$cat=isset($_GET['category'])?$_GET['category']:NULL;
if(isset($title))
$qry="select * from books where quantity>0 and title='$title' ";
else{
$qry="select * from books where quantity>0 ";
if(isset($class)) $qry.=" and class='$class' ";
if(isset($cat)) $qry.=" and category='$cat' ";
}
Ну, во-первых, я бы рекомендовал использовать подготовленные операторы, чтобы избежать внедрения SQL через ваш текущий код, но использование оператора LIKE в SQL должно работать во втором случае.
+ Изменить
`select * from books where quantity > 0 and title = '$title'`
в
`select * from books where quantity > 0 and title LIKE '%$title%'`
Что это делает, он проверяет наличие пропущенных букв вокруг слова. Таким образом, если бы заголовок был равен «кролик», то и «Белый кролик», и «Кролик», и «Кролик» были бы результатами.
постскриптум пробел ничего не стоит
Других решений пока нет …