7

Estoy ejecutando Sql Server 2008 R2 y necesito habilitar la búsqueda de texto completo en una vista con una combinación interna. Mi problema es que no sé cómo crear mi índice de texto completo.Habilitar la búsqueda de texto completo en la vista con la unión interna

Cuando uso el Asistente de indización de texto completo aparece este error.

Se debe definir una columna única en esta tabla/vista.

Para que pueda comprender mejor mi problema, consulte el siguiente ejemplo de w3school http://www.w3schools.com/sql/sql_join_inner.asp La última selección es solo mi vista.

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) 

Respuesta

16

Sólo puede crear un índice de texto completo en una indexed view, es por eso que está recibiendo el error. Para crear una búsqueda de texto completo en una tabla o vista, debe tener un índice exclusivo, de columna única, no anulable.

En otras palabras, usted debe crear su vista algo como esto: búsqueda de texto completo

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 construye un índice de texto completo a través de un proceso llamado de la población, que llena el índice con las palabras y las ubicaciones en el que ocurren en sus tablas y filas. Es por eso que necesita un campo que lo identificará de manera única en cada fila y es por eso que necesita hacer que la vista sea indexada.

Más información here y here.

+0

¿Pero es posible crear en mi ejemplo? No estoy seguro de dónde ir, de su respuesta. – gulbaek

+1

@gulbaek - He agregado un ejemplo, pero sugiero que lea los artículos en los enlaces. El primer enlace describe cómo funciona la búsqueda de texto completo y el segundo es una guía sobre cómo crear un fts en varias tablas. – TheBoyan

+0

@gulbaek - también puede encontrar información útil sobre cómo crear un índice de texto completo aquí: http://msdn.microsoft.com/en-us/library/ms187317.aspx – TheBoyan

Cuestiones relacionadas