sql-server – 在SQL Server 2008中跨多个表,列使用全文搜索
发布时间:2020-12-12 16:45:50 所属栏目:MsSql教程 来源:网络整理
导读:我需要使用全文搜索在数据库中的两个表中搜索多个列.这两个表格有相关列全文索引. 我选择全文搜索的原因: 能够轻松搜索重音字词(cafè) 2.能够根据单词近似等级排列 “你的意思是XXX吗?”功能 这是一个虚拟桌面结构,以说明挑战: Table Book BookIDName (Fu
我需要使用全文搜索在数据库中的两个表中搜索多个列.这两个表格有相关列全文索引.
我选择全文搜索的原因: 这是一个虚拟桌面结构,以说明挑战: Table Book BookID Name (Full-text indexed) Notes (Full-text indexed) Table Shelf ShelfID BookID Table ShelfAuthor AuthorID ShelfID Table Author AuthorID Name (Full-text indexed) 我需要搜索书名,书籍和作者姓名. 我知道有两种方法可以实现这一点: >使用全文索引视图:这将是我的首选方法,但我不能这样做,因为为了全文索引的视图,它需要是schemabound,没有任何外部联接,具有唯一的指数.我需要获取我的数据的视图不能满足这些约束(它包含许多其他连接的表,我需要从中获取数据). 解决方法使用FREETEXTTABLE,您只需要设计一些算法来计算每个连接表结果的合并排名.下面的例子将结果从书桌的命中偏移.SELECT b.Name,a.Name,bkt.[Rank] + akt.[Rank]/2 AS [Rank] FROM Book b INNER JOIN Author a ON b.AuthorID = a.AuthorID INNER JOIN FREETEXTTABLE(Book,Name,@criteria) bkt ON b.ContentID = bkt.[Key] LEFT JOIN FREETEXTTABLE(Author,@criteria) akt ON a.AuthorID = akt.[Key] ORDER BY [Rank] DESC 请注意,我简化了该示例的模式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |