0

我有一个平面表来执行全文搜索,即使是最简单的搜索也不起作用。我尝试了很多东西,我得到了相同的结果。然而令人惊讶的是,类似的全文搜索适用于同一数据库中的其他表。

下面是我的表格结构,我还添加了全文索引详细信息以供快速参考。 表结构和全文选项

下面是我的查询的搜索结果,我已经尝试了多种方法,但没有任何运气,只有当我提供列中的确切值时,查询才有效。 搜索结果 即使我只在查询中使用一列,即 Fname,搜索结果也是相同的。

我可能遗漏了一些基本的东西,但我不确定那是什么。下面是它的创建表脚本。

CREATE TABLE [dbo].[SampleTable](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [CID] [int] NOT NULL,
    [VID] [int] NOT NULL,
    [FID] [int] NOT NULL,
    [TID] [int] NOT NULL,
    [FName] [nvarchar](200) NOT NULL,
    [IName] [nvarchar](200) NOT NULL,
    [Contents] [nvarchar](max) NOT NULL,
    [LatestVersion] [int] NOT NULL,
 CONSTRAINT [PK_SampleTable] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'climate.c','climate_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'flowrout.c','validateTreeLayout','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'flowrout.c','validateGeneralLayout','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'gage.c','gage_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'gwater.c','gwater_validateAquifer','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'gwater.c','gwater_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'lid.c','lid_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'lid.c','validateLidProc','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'lid.c','validateLidGroup','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'link.c','link_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'link.c','conduit_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'link.c','pump_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'link.c','orifice_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'link.c','weir_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'node.c','node_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'node.c','divider_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'project.c','project_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'rdii.c','validateRdii','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'shape.c','shape_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'snow.c','snow_validateSnowmelt','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'subcatch.c','subcatch_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'table.c','table_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'transect.c','transect_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'climate.c','climate_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'flowrout.c','validateTreeLayout','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'flowrout.c','validateGeneralLayout','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'gage.c','gage_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'gwater.c','gwater_validateAquifer','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'gwater.c','gwater_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'lid.c','lid_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'lid.c','validateLidProc','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'lid.c','validateLidGroup','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'link.c','link_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'link.c','conduit_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'link.c','pump_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'link.c','orifice_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'link.c','weir_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'node.c','node_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'node.c','divider_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'project.c','project_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'rdii.c','validateRdii','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'shape.c','shape_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'snow.c','snow_validateSnowmelt','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'subcatch.c','subcatch_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'table.c','table_validate','',5);
insert into SampleTable (CID, VID, FID, TID, FName, IName, Contents, LatestVersion) values (-1,1,1,1,'transect.c','transect_validate','',5);

如果您需要更多详细信息,请告诉我。

更新1:所以进一步挖掘我发现了与我类似的问题。

因此,如果正确理解了这些 URL,那么 FreeTextTable 对一个单词不起作用,这肯定不是真的,因为我在另一个表上使用一个单词查询并且它工作得很好。 一字FTT查询

4

1 回答 1

0

您正在尝试执行 FreeTextTable 不支持的子字符串匹配。相反,使用带有通配符的ContainsTable 。

select * from ContainsTable(SampleTable, ([FName],[IName]), 'clima*')

此搜索将匹配这些字符串:

  • “气候.c”
  • “气候.c 等等”
  • “等等等等气候.c”
  • “废话气候.c废话”
  • “气候”
  • “等等等等气候”

但它不会匹配:

  • “xx气候”

仅供参考,FreeTextTable 用于自然语言类型搜索——同义词、​​单数/复数形式、变位匹配,并且只需要在搜索中匹配 1 个词。ContainsTable 匹配精确的单词(无同义词等),允许使用布尔运算符(AND、OR、NOT),支持通配符(*、?),并且您可以执行邻近搜索(word2 的 N 个单词中的 word1)。

于 2015-04-28T13:18:35.810 回答