Включить полнотекстовый поиск при просмотре с помощью внутреннего соединения - PullRequest
8 голосов
/ 13 декабря 2011

Я использую Sql Server 2008 R2, и мне нужно включить полнотекстовый поиск для представления с внутренним объединением. Моя проблема в том, что я не знаю, как создать свой полнотекстовый индекс.

При использовании мастера полнотекстовой индексации я получаю эту ошибку.

В этой таблице / представлении должен быть определен уникальный столбец.

Чтобы вы лучше поняли мою проблему, посмотрите следующий пример из 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)

1 Ответ

18 голосов
/ 13 декабря 2011

Полнотекстовый индекс можно создать только в индексированном представлении , поэтому вы получаете сообщение об ошибке.Чтобы создать полнотекстовый поиск по таблице или представлению, он должен иметь уникальный одноколонный, не обнуляемый индекс.

Другими словами, вы должны создать свое представление примерно так:

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 создает полнотекстовый индекс с помощью процесса, называемого заполнением, который заполняет индекс словами и местоположениями, в которых они встречаются в ваших таблицах и строках.Вот почему вам нужно поле, которое будет уникально идентифицировать вас в каждой строке, и именно поэтому вам нужно сделать индексированное представление.

Дополнительная информация здесь и здесь .

...