我与FILESTREAM在类型为varchar(最大)的列创建的全文索引启用。该FILESTREAM包含如JPG文件,TIF的,PDF的,和XML的(虽然这主要是风马牛不相及的问题,我相信)。

数据

我有两个疑问,我已经创建了一个让我在索引搜索。

全文检索#1 -

select
      parentObj.ObjectID as 'GroupingID',
      parentObj.Name as 'Grouping',
      childObj.ObjectID as 'FileObjID', 
      childObj.Name as 'FileName',
      fs.FileStreamID
    from dbo.dat_FileStream fs
    inner join dbo.dat_Object childObj
        on fs.ObjectID = childObj.ObjectID
    inner join dbo.dat_Collection c
        on fs.ObjectID = c.ObjectID
    inner join dbo.dat_Object parentObj
        on c.ParentID = parentObj.ObjectID
    where contains(FileStreamData, @srchTerm)
        and parentObj.ObjectTypeID = 1
    ORDER BY 'Grouping'

全文检索#2 -

select
      KEY_TBL.RANK,
      parentObj.ObjectID as 'GroupingID',
      parentObj.Name as 'Grouping',
      childObj.ObjectID as 'FileObjID',
      childObj.Name as 'FileName',
      fs.FileStreamID
    from dbo.dat_FileStream fs
    inner join containstable(dbo.dat_FileStream, FileStreamData, @srchTerm, 1000) as KEY_TBL
        on fs.FileStreamID = KEY_TBL.[KEY]
    inner join dbo.dat_Object childObj
        on fs.ObjectID = childObj.ObjectID
    inner join dbo.dat_Collection c
        on fs.ObjectID = c.ObjectID
    inner join dbo.dat_Object parentObj
        on c.ParentID = parentObj.ObjectID
    where parentObj.ObjectTypeID = 1
    ORDER BY 'Grouping'

两个全文搜索之间的唯一差别显著是查询#1的用途和包含查询#2的用途CONTAINSTABLE。

我的问题是,这两个查询并不总是产生相同的结果。例如,假如我要搜索的短语“独立承包商”,查询#1将产生一个结果集的10个不同的文件(PDF文件和XML的),而查询#2只产生一个结果集的6.这似乎是规则:查询#1总是得到一些超过查询#2,#查询2总是产生完全相同的匹配该查询#1一样。

查询#1 - 在 “独立承包商” 产量搜索:

4262    AAA-00-12   4561    AAA-00-12.pdf   4235
4316    AAA-00-15   4753    AAA-00-15.pdf   4427
4316    AAA-00-15   4754    AAA-00-15.xml   4428
3873    AAA-00-19   4784    AAA-00-19.pdf   4458
3903    AAA-00-22   6795    AAA-00-22.pdf   6459
3953    AAA-00-24   6899    AAA-00-24.pdf   6563
3953    AAA-00-24   6900    AAA-00-24.xml   6564
4842    AAA-00-9    4905    AAA-00-9.pdf    4577
4842    AAA-00-9    4906    AAA-00-9.xml    4578
4057    AAA-0001    4260    AAA-0001.pdf    3936

查询#2 - “独立承包商” 产量搜索:

19  4262    AAA-00-12   4561    AAA-00-12.pdf   4235
126 4316    AAA-00-15   4754    AAA-00-15.xml   4428
126 4316    AAA-00-15   4753    AAA-00-15.pdf   4427
116 3873    AAA-00-19   4784    AAA-00-19.pdf   4458
125 3903    AAA-00-22   6795    AAA-00-22.pdf   6459
57  3953    AAA-00-24   6900    AAA-00-24.xml   6564
57  3953    AAA-00-24   6899    AAA-00-24.pdf   6563
有帮助吗?

解决方案

CONTAINSTABLE

  

top_n_by_rank

     

指定只nhighest排名的匹配,以降序   返回。只适用于当   整数值,n,被指定。 如果   TOP_N_BY_RANK与其它组合   参数,查询可能返回   比的行数较少的行   实际匹配所有   谓词。

尝试运行的w / o顶部,看看它是否匹配CONTAINS

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top