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

前端之家收集整理的这篇文章主要介绍了sql – 在具有内部联接的视图上启用全文搜索前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在运行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的进程构建全文索引,该进程使用单词及其在表和行中出现的位置填充索引.这就是为什么您需要一个唯一标识每一行的字段,这就是您需要将视图编入索引的原因.

更多信息herehere.

原文链接:https://www.f2er.com/mssql/83469.html

猜你在找的MsSQL相关文章