我在单列上尝试MS SQL全文查询。
为此我使用“CONTAINSTABLE”功能。
以下是我的商店程序:
ALTER PROC [dbo].[USP_Videos_SearchVideos_ContainsTable]
@searcher varchar(2000)
AS
DECLARE @SearchString varchar(2000)
SET @SearchString = 'FormsOf(INFLECTIONAL, "' + @searcher + '")'
SELECT *
FROM table_name AS v
INNER JOIN CONTAINSTABLE(table_name, TitleText, @SearchString) AS Ranker
ON v.ID = Ranker.[KEY]
INNER JOIN mst_Categories AS c
ON v.CategoryId = c.ID
WHERE RANKER.RANK >= 100
ORDER BY Ranker.RANK DESC, v.ViewCount DESC
我可以传递整个“搜索字符串”,但结果只包含那些将“搜索字符串”完全包含在“视频标题”中的视频。
这是不期望的,相反它应该返回包含屈折词的结果集,因为我在我的存储过程中使用“FormsOf”。
请评论。
答案 0 :(得分:0)
Supported Forms of Query Terms (Full-Text Search)显示支持的查询表单:
特定单词的屈折形式(代词):屈折形式是动词的不同时态或名词的单数和复数形式。
Searching for the Inflectional Form of a Specific Word处的更多细节:
您可以搜索动词的所有不同时态,也可以搜索名词的单数和复数形式。例如,本主题中显示的查询搜索任何形式的“脚”(“脚”,“脚”等)
所以你看,你可以搜索单个单词(动词或名词)的变形,而不是短语。也就是说,FORMSOF(..,"search")'
或'FORMSOF(..,"string")'
但不是FORMSOF(..,"search string")'