SQL Server跨两个表的全文本搜索:文章和文章标签

时间:2019-07-19 11:11:19

标签: sql-server full-text-search

我必须对两个表格进行全文查询:文章和文章标签。

文章表

ArticleID  
Title  
Description  
Version

商品标签表

TagID  
ArticleID  
Version  
TagName  

我最初的想法是创建一个视图,从中选择文章以及由串联的标签字符串组成的另一列,但这似乎是可疑的,因为大多数解决方案建议使用FOR XML技术进行串联,而根据Microsoft,这是不好,因为它不是它的预期目的。

在其他文章中,我看到似乎最好先创建一个视图,然后将该视图和相关列添加到全文目录中。我以前从未在全文索引/目录中使用过视图,因此我对此不确定。

对该视图的查询可能如下所示:

select * from 
    Article_Versions av
    left join Article_Tags avt on av.ArticleID = avt.ArticleID and av.version = avt.version
where
    not exists(select 1 from Article_Versions av2 where av2.ArticleID = av.ArticleID and av2.version > av.Version)
order by 
    av.articleid asc  

注意:我在这里使用NOT EXISTS仅提取文章/标签的最新版本。

这样,我将为每篇文章重复记录,其中该文章具有多个关联的标签。我可以通过使用Distinct来解决此问题,前提是我的最终查询不包含Tag表列。

如果我可以创建这样的视图并假设其结构如下:

ArticleTagView

ArticleID  
Title  
Description  
TagName  
Version  

我假设我可以为标题,说明和标签名列建立索引?

我可能会如下查询该视图:

SELECT DISTINCT  
  fttAtv.[RANK]  
  ArticleID,  
  Title,  
  Description,  
  Version
FROM  
  CONTAINSTABLE(ArticleTagView, *, 'search-term') as fttAtv
  INNER JOIN ArticleTagView atv on atv.ArticleID = fttAtv.[KEY]  
ORDER BY  
  fttAtv.[RANK] 

我要朝正确的方向前进吗?

0 个答案:

没有答案