SQL LIKE, как сортировать результаты по взвешенное количество вхождений?

У меня есть поисковый запрос:

"Yellow large widgets"

Я разбил его на 3 слова:

1 = "Yellow";
2 = "Large";
2 = "Widgets";

Затем я выполняю поиск с помощью:

SELECT * FROM widgets
    WHERE (description LIKE '%yellow%' OR description LIKE '%large%' OR description LIKE 'widgets') 
    OR (title LIKE '%yellow%' OR title LIKE '%large%' OR title LIKE '%widgets%')

Как я могу отсортировать результаты с этими предубеждениями?

  • Заголовок является приоритетным, если какой-либо из терминов появляется в заголовке, его следует считать более важным
  • Подсчет числа случаев, результаты с более высоким общим числом случаев должны отображаться первыми

Идеальная методология

  • Подсчитайте вхождения в описание .
  • Каждое здесь вхождение приносит 1 балл .
  • Подсчитайте вхождения в заголовке .
  • Каждое title вхождение стоит 5 баллов .
  • Сортировать по точкам.

Но я бы не знал, с чего начать это в SQL.

9
задан double-beep 1 February 2019 в 15:42
поделиться