В моей базе данных есть поле ключевых слов , в котором хранится список ключевых слов, разделенных запятыми.
Например, кукла Шрека может иметь следующие ключевые слова:
ogre, green, plush, hero, boys' toys
Кукла "Beanie Baby" (это может быть людоед ) может иметь:
beanie baby, kids toys, beanbag toys, soft, infant, ogre
(Это полностью надуманный пример.)
Что бы я хотел сделать, если потребитель ищет слово «огр», я бы хотел, чтобы кукла «Шрек» поднялась выше в результатах поиска.
Мой администратор контента считает, что если ключевое слово находится в начале списка, оно должно получить более высокий рейтинг. (Это имеет смысл для меня и позволяет мне легко контролировать релевантность результатов поиска).
Вот упрощенный запрос:
SELECT
p.ProductID AS ContentID
, p.ProductName AS Title
, p.ProductCode AS Subtitle
, 100 AS Rank
, p.ProductKeywords AS Keywords
FROM Products AS p
WHERE FREETEXT( p.ProductKeywords, @SearchPredicate )
Я думаю что-то вроде замены RANK на:
, 200 - INDEXOF(@SearchTerm) AS Rank
Это "должно" ранжировать результаты ключевых слов по их релевантности
Я знаю, что INDEXOF - это не команда SQL ... но это то, что Я хотел бы выполнить.
Правильно ли я подхожу к этому?
Можно ли сделать что-то подобное?
Имеет ли это смысл?