我正在开发一个SQL Server 2008项目,我相信全文搜索是最好的方法。我一直在尽可能多地阅读它,并且非常了解如何将它设置为单个表格。但我不完全知道如何用我的方案设置它 - 想象一下如下表结构:SQL Server全文搜索 - 多对多关系
书
- Id
- Title
- Description
BOOKAUTHOR
- BookId
- AuthorId
作者
- Id
- Name
正如您所看到的,数据库包含一个带有书籍的表格,每本书可以没有,一个或多个作者。每位作者也可以是没有,一本或多本书的一部分 - 即Book
和Author
表具有多对多关系,可通过链接表BookAuthor
处理。
我现在想要完成的是一个搜索工具,用于根据用户提供的搜索字符串查找匹配的书籍。因此,如果在Brown
用户类型我希望找到的所有书籍,其中以下任一列中包含单词Brown
:
Book.Title
Book.Description
Author.Name
从本质上说,我希望有一个结果集的书籍,包括书的标题Brown Bear
和作者Dan Brown
所写的书籍。如果有任何建议,我应该如何设置,我真的很感激你的意见!
(作为一个侧面说明,一旦我有这样的过滤工作,查询结果将还需要排序和分页,通过@SortOrder
,@PageIndex
和@PageSize
传递到存储过程中处理 - 但我想这可能是一个)
为什么您认为全文搜索在这里是一个体面的解决方案?这对我来说看起来像正常的数据库设计。 – TomTom 2012-03-04 13:20:47
[在多个表,列中使用SQL Server 2008中的全文搜索]可能的重复(http://stackoverflow.com/questions/403630/using-full-text-search-in-sql-server-2008-across -multiple-tables-columns) – 2012-03-04 14:01:19
@TomTom如上所述搜索“Brown”只是我想获得的简单示例。我需要能够搜索x个单词,并且使用LIKE不起作用。我们还希望将来能够找到_almost_匹配的行,并且这将需要全文搜索(据我所知)。 – Iskariot 2012-03-05 07:33:18