加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 在具有内部联接的视图上启用全文搜索

发布时间:2020-12-12 16:26:22 所属栏目:MsSql教程 来源:网络整理
导读:我正在运行Sql Server 2008 R2,我需要在具有内部联接的视图上启用全文搜索.我的问题是我不知道如何创建我的全文索引. 当我使用全文索引向导时,我收到此错误. A unique column must be defined on this table/view. 为了让您更好地了解我的问题,请参阅w3school
我正在运行Sql Server 2008 R2,我需要在具有内部联接的视图上启用全文搜索.我的问题是我不知道如何创建我的全文索引.

当我使用全文索引向导时,我收到此错误.

A unique column must be defined on this table/view.

为了让您更好地了解我的问题,请参阅w3school http://www.w3schools.com/sql/sql_join_inner.asp中的以下示例.最后一个选择只是我的观点.

PersonOrderView  - View
    SELECT Persons.LastName,Persons.FirstName,Orders.OrderNo
    FROM Persons
    INNER JOIN Orders
    ON Persons.P_Id=Orders.P_Id
    ORDER BY Persons.LastName     <- Order by is not important for me

Persons - Table
P_Id (PK,int,not null)
LastName(nvarchar(50),null)
FirstName(nvarchar(50),null)
Address(nvarchar(50),null)
City(nvarchar(50),null)

Orders - Table
O_Id(PK,not null)
P_Id(FK,not null)
OrderNo(nvarchar(50),not null)

解决方法

您只能在 indexed view上创建全文索引,这就是您收到错误的原因.要在表或视图上创建全文搜索,它必须具有唯一的单列非可空索引.

换句话说,您应该创建如下所示的视图:

CREATE VIEW ViewSearch WITH SCHEMABINDING AS
SELECT Persons.P_Id AS ID,Persons.LastName,Orders.OrderNo
    FROM Persons
    INNER JOIN Orders ON Persons.P_Id=Orders.P_Id
GO
CREATE UNIQUE CLUSTERED INDEX IX_ViewSearch ON ViewSearch (ID)

SQL全文搜索通过名为population的进程构建全文索引,该进程使用单词及其在表和行中出现的位置填充索引.这就是为什么您需要一个唯一标识每一行的字段,这就是您需要将视图编入索引的原因.

更多信息here和here.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读