Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 试图理解我的全文搜索结果_Sql_Sql Server_Full Text Search_Sql Server 2012 - Fatal编程技术网

Sql 试图理解我的全文搜索结果

Sql 试图理解我的全文搜索结果,sql,sql-server,full-text-search,sql-server-2012,Sql,Sql Server,Full Text Search,Sql Server 2012,我运行sql server 2012并在800K行表上应用FTS索引。 该表以行的形式填充了任意数据。 我使用解析用户定义的文本,然后搜索以下文本“ 自从我运行了下面的sql之后,我知道我已经在数据库中使用了 declare @searchterm nvarchar(max) = '%Zaphod gave him%' select fact.id,<MyColumns> from [dbo].[fact] as fact where MyColumnAName like @sea

我运行sql server 2012并在800K行表上应用FTS索引。 该表以行的形式填充了任意数据。 我使用解析用户定义的文本,然后搜索以下文本“

自从我运行了下面的sql之后,我知道我已经在数据库中使用了

declare @searchterm nvarchar(max) = '%Zaphod gave him%'

select fact.id,<MyColumns>
from [dbo].[fact] as fact
where MyColumnAName like @searchterm or
      MyColumnBName like @searchterm 
      ....
我将其添加到sql中

SELECT fact.id, KEY_TBL.RANK, <MyColumns>
FROM [dbo].[Fact] as fact
INNER JOIN FREETEXTTABLE(fact,*, '(( FORMSOF (INFLECTIONAL, Zaphod)  AND  
                                     FORMSOF (INFLECTIONAL, gave) ) AND  
                                     FORMSOF (INFLECTIONAL, him) )') AS KEY_TBL
ON fact.ID = KEY_TBL.[KEY]
ORDER BY RANK DESC
选择fact.id,KEY\u TBL.RANK,
来自[dbo]。[Fact]作为事实
内部连接FREETEXTTABLE(事实,*,'((形式sof(屈折,Zaphod)和
形式sof(屈折,give))和
形式(屈折变化,him)))作为键
ON fact.ID=KEY\u TBL。[KEY]
按等级顺序描述
现在,在两个不同的行中有两个精确文本的一行位于有一个精确数字的多行之后。
他们的排名都一样。
我可以在结果集中较早地设置此行吗?
这样排序是因为排名不够精确吗?
谢谢。

根据,FREETEXTTABLE不支持表单

FREETEXTTABLE已经匹配了单词和同义词的屈折形式(有关更多信息,请参阅)。FREETEXT/FREETEXTTABLE也不支持运算符,因此根据停止列表中的内容,它可能也匹配单词“和”。(它还将查找单词“FORMSOF”和“屈折形式”)“但它们可能不在您的索引中。但这不会影响您的搜索,因为FREETEXT/FREETEXTTABLE只需匹配搜索字符串中的至少一个单词即可。)


FORMSOF仅受CONTAINS和CONTAINSTABLE支持。

谢谢您的参考。这在文档中有点隐藏。为了测试您是否正确,我刚刚查询了FREETEXTTABLE(事实,,'Zaphod')和FREETEXTTABLE(事实,,'(FORMSOF(屈折,Zaphod))。计数(*)是相同的。第一次查询的排名要高得多。似乎您是对的:-)。
 (( FORMSOF (INFLECTIONAL, Zaphod)  AND
    FORMSOF (INFLECTIONAL, gave) ) AND  
    FORMSOF (INFLECTIONAL, him) )
SELECT fact.id, KEY_TBL.RANK, <MyColumns>
FROM [dbo].[Fact] as fact
INNER JOIN FREETEXTTABLE(fact,*, '(( FORMSOF (INFLECTIONAL, Zaphod)  AND  
                                     FORMSOF (INFLECTIONAL, gave) ) AND  
                                     FORMSOF (INFLECTIONAL, him) )') AS KEY_TBL
ON fact.ID = KEY_TBL.[KEY]
ORDER BY RANK DESC