我正在运行 Sql Server 2008 R2,我需要在具有内部联接的 View 上启用全文搜索。我的问题是我不知道如何创建全文索引。
当我使用全文索引向导时,出现此错误。
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, int, not null)
P_Id(FK, int, not null)
OrderNo(nvarchar(50), not null)
最佳答案
您只能在 indexed view 上创建全文索引。 ,这就是您收到错误的原因。要在表或 View 上创建全文搜索,它必须具有唯一的、单列、不可为空的索引。
换句话说,你应该像这样创建你的 View :
CREATE VIEW ViewSearch WITH SCHEMABINDING AS
SELECT Persons.P_Id AS ID, Persons.LastName, Persons.FirstName, 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 全文搜索通过称为填充的过程构建全文索引,该过程使用单词及其在表和行中出现的位置填充索引。这就是为什么您需要一个字段来唯一标识您的每一行,这就是为什么您需要对 View 进行索引的原因。
更多信息 here .
关于sql - 使用内部联接在 View 上启用全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8486703/