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. веб-приложение проверка подлинности с использованием форм приведет к аналогичной строке кода FormsAuthentication.SetAuthCookie (strUsrNm, True), это нормально ...

Учитывая идею веб-приложения (.NET 3.5 +)

  • Браузер
  • веб-приложение

аутентификация с использованием форм приведет к аналогичной строке кода

FormsAuthentication.SetAuthCookie (strUsrNm, True)

это нормально для экземпляра сервера без балансировки нагрузки. как аутентификация работает в состоянии с балансировкой нагрузки (без липкого сеанса / бесконечности), и вы не можете сохранить IP-адрес клиента, пароль пользователя или логин в браузере.

  • Браузер
  • Балансировщик нагрузки
  • Веб-приложение (на сервере 1) || Веб-приложение (на сервере 2)

ограничения: нет сеансов базы данных, нет сервера AD (например: обслуживать внешних пользователей)

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

спасибо

6
задан dbones 24 February 2011 в 12:07
поделиться