7

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) 

答えて

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フルテキスト検索は、単語や場所でインデックスを埋め人口と呼ばれるプロセスを介して、フルテキストインデックスを作成します彼らはあなたのテーブルと行に発生します。そのため、各行を一意に識別するフィールドが必要なのです。そのため、ビューをインデックスに登録する必要があります。

詳細情報hereおよびhere

+0

私の例で作成することは可能ですか?あなたの答えからどこに行くべきかわからない。 – gulbaek

+1

@gulbaek - 例を追加しましたが、リンクの記事を読むことを強くお勧めします。最初のリンクはフルテキスト検索の仕組みを説明し、2番目のリンクは複数のテーブルに対してftsを作成する方法のガイドです。 – TheBoyan

+0

@gulbaek - ここでフルテキストインデックスを作成する方法に関する有益な情報もあります。http://msdn.microsoft.com/en-us/library/ms187317.aspx – TheBoyan

関連する問題