Релевантный поиск c помощью LIKE

Например, на сайте статей есть поиск, он ищет ключевое слово по полям: «название статьи», «title » и «текст». SQL запрос получается следующим:

SELECT 
	* 
FROM 
	`articles` 
WHERE 
	`name` LIKE '%KEY%' 
	OR `title` LIKE '%KEY%' 
	OR `text` LIKE '%KEY%'
SQL

В результате поиска получается мешанина, найти нужную статью невозможно если ключевое слово одно или часто встречается.

Исправить это можно введением весов по коэффициенту релевантности т.е. если ключевое слово имеет вхождение в названии статьи, то его значение увеличивается на 40, если в title то еще +40 и т.д. Далее нужно всего лишь отсортировать таблицу по этому значению.

SELECT
	*,
	(
		IF (`name` LIKE '%KEY%', 40, 0) 
		+ IF (`title` LIKE '%KEY%', 40, 0) 
		+ IF (`text` LIKE '%KEY%', 20, 0)
	) AS `relevant`
FROM 
	`articles` 
HAVING 
	`relevant` > 0
ORDER BY
	`relevant` DESC
SQL
20.10.2017 , обновлено 17.10.2019
Предыдущая запись Сортировка по диапазону цен
Следующая запись Поиск дубликатов MySQL

Комментарии

, чтобы добавить комментарий.

Другие публикации

Счетчик просмотров страниц с графиком
Для примера возьмем статейный сайт, на нём нужно сделать счетчик просмотров статей, с выводом результатов за день,...
22.11.2019
1045
+2
Поиск ближайших объектов в БД по координатам
Рассмотрим пример как найти в базе данных соседние объекты по координатам и вывести их на карте Яндекс.
17.09.2019
1081
+1
Автоматическое сжатие и оптимизация картинок на сайте
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
26.10.2018
4555
+3
Примеры использования PDO MySQL
В статье приведены основные примеры работы с расширением PHP PDO. Такие как подключение к БД, получение, изменение и...
11.11.2017
23633
0
Класс обертка для PDO
Класс значительно упрощает работу с PDO, сокращает код. Реализован на статических классах и не требует создание экземпляра класса.
14.03.2018
6432
+1
Замена раскладки на PHP
PHP функции для исправление неправильной раскладки клавиатуры в тексте и использование их в поиске по сайту.
15.08.2019
893
0