FREETEXTTABLE(Transact-SQL)
업데이트: 2006년 7월 17일
지정된 freetext_string의 텍스트와 의미는 일치하지만 단어는 정확히 일치하지 않는 값의 문자 기반 데이터 형식을 포함하는 열에 대해 행이 없거나 하나 이상인 테이블을 반환합니다. FREETEXTTABLE은 일반 테이블 이름처럼 SELECT 문의 FROM 절에서 참조될 수 있습니다.
FREETEXTTABLE을 사용하는 쿼리는 각 행에 대해 관련성 순위 값(RANK) 및 전체 텍스트 키(KEY)를 반환하는 freetext 유형의 전체 텍스트 쿼리를 지정합니다.
구문
FREETEXTTABLE (table , { column_name | (column_list) | * }
, 'freetext_string'
[ ,LANGUAGE language_term ]
[ ,top_n_by_rank ] )
인수
table
전체 텍스트 쿼리용으로 표시된 테이블 이름입니다. table이나 view는 한 부분, 두 부분 또는 세 부분으로 구성된 데이터베이스 개체 이름일 수 있습니다. 뷰를 쿼리할 때는 전체 텍스트 인덱싱된 기본 테이블 하나만 포함할 수 있습니다.자세한 내용은 Transact-SQL 구문 규칙(Transact-SQL)을 참조하십시오.
table은 서버 이름을 지정할 수 없으며 연결된 서버에 대한 쿼리에서 사용할 수 없습니다.
- column_name
table의 검색할 열의 이름입니다. char, varchar, nchar, nvarchar, text, ntext, image, xml 및 varbinary(max) 유형의 열은 전체 텍스트 검색에 사용할 수 있습니다.
- column_list
여러 개의 열을 쉼표로 구분하여 지정할 수 있음을 나타냅니다. column_list는 괄호로 묶어야 합니다. language_term을 지정하지 않을 경우 column_list에 있는 모든 열의 언어가 같아야 합니다.
- *
주어진 freetext_string을 검색하는 데 전체 텍스트 검색용으로 등록된 모든 열을 사용하도록 지정합니다. language_term을 지정하지 않으면 테이블에 있는 모든 전체 텍스트 인덱싱된 열의 언어가 동일해야 합니다.
freetext_string
column_name에서 검색할 텍스트입니다. 단어, 구 또는 문장을 포함하여 모든 텍스트를 입력할 수 있습니다. 모든 용어나 용어의 형식이 전체 텍스트 인덱스에 있으면 일치하는 항목이 생성됩니다.AND가 키워드인 CONTAINS 검색 조건과 달리 freetext_string에서 사용되는 'and'는 의미 없는 단어로 간주되어 무시됩니다.
WEIGHT, FORMSOF, 와일드카드, NEAR 및 기타 구문은 사용할 수 없습니다. freetext_string은 단어가 분리되고 형태소가 분석되며 동의어 사전을 통해 전달됩니다. freetext_string이 큰따옴표로 묶여 있으면 형태소 분석 및 동의어 사전 작업이 수행되지 않고 구 일치가 수행됩니다.
LANGUAGE language_term
FREETEXTTABLE 쿼리의 일부로 단어 분리, 형태소 분석, 동의어 사전 및 의미 없는 단어 제거에 리소스를 사용할 언어입니다. 이 매개 변수는 옵션이며 언어의 LCID(로캘 ID)에 해당하는 문자열, 정수 또는 16진수 값으로 지정될 수 있습니다. language_term을 지정할 경우 해당 언어는 검색 조건의 모든 요소에 적용됩니다. 값이 지정되지 않은 경우 전체 텍스트 언어 열이 사용됩니다.문자열로 지정하는 경우 language_term은 syslanguages 시스템 테이블의 alias 열 값에 해당합니다. 문자열은 'language_term'과 같이 작은따옴표로 묶어야 합니다. 정수로 지정하는 경우 language_term은 언어를 식별하는 실제 LCID입니다. 16진수 값으로 지정하는 경우 language_term은 0x로 시작하는 LCID의 16진수 값입니다. 16진수 값은 선행 0을 포함하여 8자리 수를 초과할 수 없습니다.
값이 DBCS(더블바이트 문자 집합) 형식인 경우 Microsoft SQL Server는 값을 유니코드로 변환합니다.
지정된 언어가 잘못되었거나 해당 언어에 해당하는 리소스가 설치되지 않은 경우 SQL Server는 오류를 반환합니다. 언어 중립적인 리소스를 사용하려면 language_term을 0x0으로 지정하십시오.
top_n_by_rank
정수 값인 n을 지정하면 FREETEXTTABLE은 일치하는 항목 중 순위에 따른 상위 n 항목만 반환합니다.FREETEXTTABLE 조건자와 함께 필터링을 수행하면 필터는 상위 n 행에 적용되며 top_n_by_rank 행보다 값이 적은 행이 반환됩니다. sp_configure 저장 프로시저의 precompute rank 옵션을 사용하면 top_n_by_rank 매개 변수를 사용하는 FREETEXTTABLE 쿼리를 늘릴 수 있습니다. 자세한 내용은 sp_configure(Transact-SQL) 및 sp_fulltext_service(Transact-SQL)를 참조하십시오.
주의
FREETEXTTABLE은 FREETEXT 조건자와 동일한 검색 조건을 사용합니다.
CONTAINSTABLE처럼 반환되는 테이블에는 KEY와 RANK라는 열이 있으며, 이 열은 적절한 행을 가져오고 행 순위 값을 사용하기 위해 쿼리 내에서 참조됩니다.
호환성 수준이 70 미만일 경우 FREETEXTTABLE은 키워드로 인식되지 않습니다. 자세한 내용은 sp_dbcmptlevel(Transact-SQL)을 참조하십시오.
사용 권한
FREETEXTTABLE은 지정된 테이블이나 테이블에서 참조되는 열에 대해 적절한 SELECT 권한이 있는 사용자만 호출할 수 있습니다.
예
다음 예에서는 sweet
, candy
, bread
, dry
또는 meat
와 연관된 모든 범주에 대해 범주 이름과 설명을 반환합니다.
[!참고] 이 예를 실행하려면 Northwind 데이터베이스를 설치해야 합니다. Northwind 데이터베이스 설치 방법은 Northwind 및 pubs 예제 데이터베이스 다운로드를 참조하십시오.
USE Northwind;
SELECT FT_TBL.CategoryName
,FT_TBL.Description
,KEY_TBL.RANK
FROM dbo.Categories AS FT_TBL
INNER JOIN FREETEXTTABLE(dbo.Categories, Description,
'sweetest candy bread and dry meat') AS KEY_TBL
ON FT_TBL.CategoryID = KEY_TBL.[KEY];
GO
다음은 동일한 예이며 LANGUAGE
language_term 및 top_n_by_rank 매개 변수의 사용을 보여 줍니다.
USE Northwind;
SELECT FT_TBL.CategoryName
,FT_TBL.Description
,KEY_TBL.RANK
FROM dbo.Categories AS FT_TBL
INNER JOIN FREETEXTTABLE(dbo.Categories, Description,
'sweetest candy bread and dry meat',LANGUAGE 'English',2)
AS KEY_TBL
ON FT_TBL.CategoryID = KEY_TBL.[KEY];
GO
[!참고] LANGUAGE language_term 매개 변수 r는 top_n_by_rank 매개 변수 사용 시 필요하지 않습니다.
변경 내역
릴리스 | 내역 |
---|---|
2006년 7월 17일 |
|
참고 항목
참조
CONTAINS(Transact-SQL)
CONTAINSTABLE(Transact-SQL)
FREETEXT(Transact-SQL)
행 집합 함수(Transact-SQL)
SELECT(Transact-SQL)
WHERE(Transact-SQL)
관련 자료
전체 텍스트 검색을 사용하여 SQL Server 쿼리
precompute rank 옵션