TSql Содержит взвешенные столбцы

У меня есть следующий запрос:

SELECT Id,SearchKeyWords, PTitle, PDescription, Presentation, Category, ManufacturerId
FROM V_ProductForSearch 
WHERE CONTAINS ((SearchKeyWords, PTitle, PDescription, Presentation), @KeyWords)

Можно ли присвоить другой вес в зависимости от столбца, в котором термин был найден. Например, в этом случае это будет вес 0,8 для двух первых столбцов и 0,5 для последних.

Я знаю, что можно присвоить вес, когда у нас есть несколько искомых терминов, но можно ли сделать то же самое для столбцов?


person Gregoire    schedule 05.08.2011    source источник


Ответы (1)


Microsoft не применила способ добиться этого, вы можете только взвесить ключевые слова, как это было реализовано. http://msdn.microsoft.com/en-us/library/ms187787.aspx (Прочитайте параграф G.)

Я попытался сделать альтернативный способ сделать это, надеюсь, его можно будет использовать.

Я взвешиваю SearchKeyWords = 5, PTitle = 4, PDescription = 3, Presentation = 2. Эти значения суммируются и упорядочиваются

SELECT Id,SearchKeyWords, PTitle, PDescription, Presentation, Category, ManufacturerId, SUM(srank) ranked 
FROM (
SELECT Id,SearchKeyWords, PTitle, PDescription, Presentation, Category, ManufacturerId, 5 srank
FROM V_ProductForSearch  
WHERE CONTAINS ((SearchKeyWords), @KeyWords) 
UNION ALL
SELECT Id,SearchKeyWords, PTitle, PDescription, Presentation, Category, ManufacturerId, 4 srank
FROM V_ProductForSearch  
WHERE CONTAINS ((PTitle), @KeyWords) 
UNION ALL
SELECT Id,SearchKeyWords, PTitle, PDescription, Presentation, Category, ManufacturerId , 3 srank
FROM V_ProductForSearch  
WHERE CONTAINS ((PDescription), @KeyWords) 
UNION ALL
SELECT Id,SearchKeyWords, PTitle, PDescription, Presentation, Category, ManufacturerId, 2 srank 
FROM V_ProductForSearch  
WHERE CONTAINS ((Presentation), @KeyWords) ) a
GROUP BY Id,SearchKeyWords, PTitle, PDescription, Presentation, Category, ManufacturerId
ORDER BY SUM(srank) 
person t-clausen.dk    schedule 12.08.2011