MS SQL CONTAINSTABLE函数如何操作给定的搜索字符串?

时间:2013-11-12 13:14:39

标签: sql full-text-search

我在单列上尝试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”。

请评论。

1 个答案:

答案 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")'