FullText使用SQL中的多个表进行搜索
发布时间:2020-12-12 06:41:33 所属栏目:MsSql教程 来源:网络整理
导读:我有3张桌子, tblBook(BookID,ISBN,标题,摘要) tblAuthor(AuthorID,FullName) tblBookAuthor(BookAuthorID,BookID,AuthorID) tblBookAuthor允许一本书有多个作者,作者可能已经写了任意数量的书. 我使用全文搜索来搜索单词的排名基础: SET @Word = 'FORMSOF(I
我有3张桌子, > tblBook(BookID,ISBN,标题,摘要) tblBookAuthor允许一本书有多个作者,作者可能已经写了任意数量的书. 我使用全文搜索来搜索单词的排名基础: SET @Word = 'FORMSOF(INFLECTIONAL,"' + @Word + '")' SELECT COALESCE(ISBNResults.[KEY],TitleResults.[KEY],SummaryResults.[KEY]) AS [KEY],ISNULL(ISBNResults.Rank,0) * 3 + ISNULL(TitleResults.Rank,0) * 2 + ISNULL(SummaryResults.Rank,0) AS Rank FROM CONTAINSTABLE(tblBook,@Word,LANGUAGE 'English') AS ISBNResults FULL OUTER JOIN CONTAINSTABLE(tblBook,Title,LANGUAGE 'English') AS TitleResults ON ISBNResults.[KEY] = TitleResults.[KEY] FULL OUTER JOIN CONTAINSTABLE(tblBook,Summary,LANGUAGE 'English') AS SummaryResults ON ISBNResults.[KEY] = SummaryResults.[KEY] 上面的代码适用于只搜索tblBook表.但是现在我想根据搜索到的关键词搜索表tblAuthor. 你能帮我解决这个问题吗? 解决方法您可以在tblAuthor上运行另一个SELECT / CONTAINSTABLE查询,将结果合并在一起,并使用另一个查询进行换行,该查询对Rank列上的Rank进行求和,以删除任何重复项,并将tblBook和tblAuthor的结果匹配得更高.我认为这将实现你正在尝试的东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |