我正在尝试从符合搜索匹配的故障单中检索数据。这里的相关数据位是票证具有名称,以及任意数量的注释。
目前,我正在将搜索与票证名称匹配,如下所示:
char(13)
全文目录中的[key]等于TIC_PK。
这适合我,并且可以访问s1。排名,这对我来说非常重要。
现在我的问题是这种方法不适用于票搜索,因为评论目录中的键是注释PK,不会给我任何可以用来链接票证的信息。
我对如何搜索多个描述并仍然获得有意义的排名感到非常困惑。 我很清楚全文搜索,可能会遗漏一些明显的东西。
这是我目前尝试获得我所需要的东西:
JOIN freetexttable(Tickets,TIC_Name,'Test ') s1
ON TIC_PK = s1.[key]
这会让我获得与搜索匹配的评论的门票,但我认为不可能使用此方法按排名数据freetexttable返回。
答案 0 :(得分:1)
要同时搜索名称和评论并获得最有意义的排名,您应将所有这些信息放入同一表 - 一个新表 - 通过现有表填充ETL过程。
新表可能如下所示:
CREATE TABLE TicketsAndDescriptionsETL (
TIC_PK int,
TIC_Name varchar(100),
All_DES_Descriptions varchar(max),
PRIMARY KEY (TIC_PK)
)
GO
CREATE FULLTEXT INDEX ON TicketsAndDescriptionsETL (
TIC_Name LANGUAGE 'English',
All_DES_Descriptions LANGUAGE 'English'
)
安排此表通过SQL作业,Tickets和TicketDescriptions表上的触发器或数据层中的某些挂钩来填充。对于具有多个TicketDescriptions记录的故障单,请将所有这些评论的文本合并到All_DES_Descriptions
列中。
然后针对这个新表运行全文搜索。
虽然这种方法确实为机器添加了另一个cog,但实际上没有其他方法可以跨多个表执行全文搜索并生成一个等级。