7

SQL Server 2008 R2를 실행 중이며 내부 조인이 포함 된보기에서 전체 텍스트 검색을 사용하도록 설정해야합니다. 내 문제는 전체 텍스트 색인을 작성하는 방법을 모르겠다는 것입니다.내부 조인을 사용하여보기에서 전체 텍스트 검색 사용

전체 텍스트 인덱싱 마법사를 사용할 때이 오류가 발생합니다.

고유 한 열을이 테이블/뷰에 정의해야합니다.

내 문제를 더 잘 이해할 수 있도록 w3school 에서 다음 예제를 참조하십시오. 마지막 선택은 내보기입니다. 당신이 오류가 발생하는 이유

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) 

답변

16

당신은 단지 indexed view에서 전체 텍스트 인덱스를 만들 수 있습니다, 즉. 테이블 또는 뷰에서 전체 텍스트 검색을 만들려면 고유 한 단일 열, nullable이 아닌 인덱스가 있어야합니다. 즉

,이 같은보기 뭔가를 만들어야합니다

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 전체 텍스트 검색은 단어와 위치에 인덱스를 채우는 인구이라는 과정을 통해 전체 텍스트 색인을 구축 그것들은 당신의 테이블과 행에서 발생합니다. 그렇기 때문에 각 행을 고유하게 식별 할 수있는 필드가 필요하며 그 이유는 뷰를 인덱싱해야하는 이유입니다.

자세한 정보는 herehere입니다.

+0

하지만 내 예제에서는 만들 수 있습니까? 당신의 대답에서 어디로 가야할지 모르겠습니다. – gulbaek

+1

@ gulbaek - 예제를 추가했지만 링크의 기사를 읽으시기 바랍니다. 첫 번째 링크는 전체 텍스트 검색이 작동하는 방법을 설명하고 두 번째 링크는 여러 테이블에 대해 fts를 만드는 방법에 대한 지침입니다. – TheBoyan

+0

@gulbaek - 여기에서 전체 텍스트 색인을 만드는 방법에 대한 유용한 정보를 찾을 수도 있습니다. http://msdn.microsoft.com/en-us/library/ms187317.aspx – TheBoyan