ストアド プロシージャを使用して、トピック名を取得し、そのトピック名に関連付けられたキーワードと重みを使用して投稿をランク付けする方法を決定することにより、投稿をランク付けするテーブルを作成しようとしています。CONTAINSTABLE と ISABOUT を使用しようとしましたが、ISABOUT ステートメントにキーワードと重みを入れるのに問題があります。キーワードと重みをテーブルからvarchar変数に変換し、その変数をISABOUTステートメントに入れようとしましたが、SPを実行すると結果のテーブルが空になるため、変数を想定しています動作していません。ここからどこに行けばよいかわかりません。
これが私がこれまでに持っているものです:
CREATE PROCEDURE rankingSP (@Topic varchar(30))
AS
BEGIN
--creates table to display when sp is executed
CREATE TABLE #rankingTable(
Post_ID int,
Post_cont varchar(max),
[Rank] decimal(18,2))
--creates string with keywords and weights
DECLARE @keywordString varchar(max)
SELECT @keywordString = COALESCE(@keywordString + ',','')
+ Keyword + ' ' + 'WEIGHT' + '(' + CONVERT(varchar,K_weight) + ')'
FROM Keyword
PRINT @keywordString
--inserts rankings into rankingTable
INSERT INTO #rankingTable
SELECT
p.[Post_ID],
p.[Post_cont],
ct.[RANK]
FROM CONTAINSTABLE
(
Post,
Post_cont,
N'ISABOUT (@keywordString)'
) ct
INNER JOIN Post p
ON ct.[KEY] = p.Post_ID
ORDER BY ct.[RANK] DESC;
--displays the ranking table
SELECT * FROM #rankingTable
ORDER BY [Rank]DESC
END