2015-01-09 2 views
1

안녕하세요 저는 SQL 서버를 사용하고 난 folllow 테이블전체 텍스트 검색

CREATE TABLE Students 
(
    id int PRIMARY KEY IDENTITY, 
    firstName varchar(MAX) NOT NULL CHECK (firstName != ''), 
    secondName varchar(MAX) NULL CHECK (secondName != ''), 
    lastName varchar(MAX) NOT NULL CHECK (lastName != ''), 
    birthDate datetime2 NOT NULL CHECK (birthDate >= '1.01.1990'), 
    recordBookNumber int NOT NULL UNIQUE CHECK (recordBookNumber > 0), 
    enrollmentDate datetime2 NOT NULL CHECK (enrollmentDate >= '1.01.1990'), 
    groupId int NOT NULL FOREIGN KEY REFERENCES [Groups](id) ON DELETE CASCADE 
) 

그래서 만든보기 StudentsSearchView에서 전체 텍스트 검색을 할 , 클러스터 된 인덱스, 전체 텍스트 카탈로그 및 전체 텍스트 인덱스

전체 텍스트 인덱스는 여기에 있습니다 :

CREATE FULLTEXT INDEX ON 
    dbo.StudentsSearchView (
     firstName LANGUAGE 1033, 
     secondName LANGUAGE 1033, 
     lastName LANGUAGE 1033 
    ) 
KEY INDEX IDX_SEARCH ON ftCatalog 
WITH (
    CHANGE_TRACKING = AUTO, 
    STOPLIST = SYSTEM 
) 

그래서 나는 텍스트 상자, I는 입력 문자열 등이있다 'John Peter Smith'와 (과) 일치하는 항목이 모두 인데 원하는 항목이 무엇인지 알 수 없습니다. 나는 이것을 시험해 본다

SELECT * FROM 
    dbo.StudentsSearchView 
WHERE CONTAINS (
    *, '"LastName*" & "FirstName*" & "SecondName*"' 
) 

그러나 나는이 표를 가지고 있지만 아무 것도 발견하지 못했다.

P. 성, 이름 및 이름이 프로그래밍 방식으로 삽입됩니다.

답변

0

해결되었습니다. 내 실수는보기입니다. 그것은이었다

CREATE VIEW 
    dbo.StudentsSearchView WITH SCHEMABINDING 
AS 
SELECT 
    id, firstName, secondName, lastName 
FROM 
    dbo.Students 
GO 

그러나 그것은 이렇게 될 필요가있다 :

CREATE VIEW 
    dbo.StudentsSearchView (id, Fio) WITH SCHEMABINDING 
AS 
SELECT 
    id, firstName + ' ' + ISNULL(secondName, '') + ' ' + lastName 
FROM 
    dbo.Students 
GO 

그래서, 지금이 선택 쿼리는

SELECT * FROM 
    dbo.StudentsSearchView 
WHERE CONTAINS (
    *, '"LastName*" & "FirstName*" & "SecondName*"' 
) 
를 작동