전체 텍스트 검색을 사용한 쿼리Query with Full-Text Search

전체 텍스트 조건자 CONTAINSFREETEXTSELECT 문에서 행 집합 반환 함수 CONTAINSTABLEFREETEXTTABLE을 사용하여 전체 텍스트 쿼리를 작성합니다.Write full-text queries by using the full-text predicates CONTAINS and FREETEXT and the rowset-valued functions CONTAINSTABLE and FREETEXTTABLE with the SELECT statement. 이 항목에서는 각 조건자 및 함수의 예제를 제공하여 최적의 사용 방법을 선택할 수 있습니다.This topic provides examples of each predicate and function and helps you choose the best one to use.

  • 단어 및 구를 일치시키려면 CONTAINSCONTAINSTABLE을 사용합니다.Use CONTAINS and CONTAINSTABLE to match words and phrases.
  • 정확한 단어가 아닌 의미를 일치시키려면 FREETEXTFREETEXTTABLE을 사용합니다.Use FREETEXT and FREETEXTTABLE to match the meaning, but not the exact wording.

각 조건자 및 함수의 간단한 예제 Simple examples of each predicate and function

예제 - CONTAINSExample - CONTAINS

다음 예에서는 가격이 $80.99 이고 "Mountain"이라는 단어가 포함된 모든 제품을 검색합니다.The following example finds all products with a price of $80.99 that contain the word "Mountain".

USE AdventureWorks2012  
GO  

SELECT Name, ListPrice  
FROM Production.Product  
WHERE ListPrice = 80.99  
   AND CONTAINS(Name, 'Mountain')  
GO  

예제 - FREETEXTExample - FREETEXT

다음 예제에서는 vital, safety, components와 관련된 단어를 포함하는 문서를 모두 검색합니다.The following example searches for all documents that contain words related to vital, safety, components.

USE AdventureWorks2012  
GO  

SELECT Title  
FROM Production.Document  
WHERE FREETEXT (Document, 'vital safety components')  
GO  

예제 - CONTAINSTABLEExample - CONTAINSTABLE

다음 예에서는 Description 열에서 "light" 또는 "lightweight"라는 단어 근처에 "aluminum"이라는 단어가 포함된 모든 제품의 설명 ID와 설명을 반환합니다.The following example returns the description ID and description of all products for which the Description column contain the word "aluminum" near either the word "light" or the word "lightweight." 등급 값이 2 이상인 행만 반환됩니다.Only rows with a rank value of 2 or higher are returned.

USE AdventureWorks2012  
GO  

SELECT FT_TBL.ProductDescriptionID,  
   FT_TBL.Description,   
   KEY_TBL.RANK  
FROM Production.ProductDescription AS FT_TBL INNER JOIN  
   CONTAINSTABLE (Production.ProductDescription,  
      Description,   
      '(light NEAR aluminum) OR  
      (lightweight NEAR aluminum)'  
   ) AS KEY_TBL  
   ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]  
WHERE KEY_TBL.RANK > 2  
ORDER BY KEY_TBL.RANK DESC;  
GO  

예제 - FREETEXTTABLEExample- FREETEXTTABLE

다음 예에서는 순위가 높은 행을 먼저 반환하고 SELECT 목록에 각 행의 순위를 추가하도록 FREETEXTTABLE 쿼리를 확장합니다.The following example extends a FREETEXTTABLE query to return the highest ranked rows first and to add the ranking of each row to the select list. 쿼리를 지정하려면 ProductDescriptionIDProductDescription 테이블의 고유 키 열임을 알아야 합니다.To specify the query, you must know that ProductDescriptionID is the unique key column for the ProductDescription table.

USE AdventureWorks2012  
GO  

SELECT KEY_TBL.RANK, FT_TBL.Description  
FROM Production.ProductDescription AS FT_TBL   
     INNER JOIN  
     FREETEXTTABLE(Production.ProductDescription, Description,  
                    'perfect all-around bike') AS KEY_TBL  
     ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]  
ORDER BY KEY_TBL.RANK DESC  
GO  

다음은 순위 값이 10 이상인 행만 반환하도록 동일한 쿼리를 확장한 것입니다.Here is an extension of the same query that only returns rows with a rank value of 10 or greater:

USE AdventureWorks2012  
GO  

SELECT KEY_TBL.RANK, FT_TBL.Description  
FROM Production.ProductDescription AS FT_TBL   
     INNER JOIN  
     FREETEXTTABLE(Production.ProductDescription, Description,  
                    'perfect all-around bike') AS KEY_TBL  
     ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]  
WHERE KEY_TBL.RANK >= 10  
ORDER BY KEY_TBL.RANK DESC  
GO  

최적의 조건자 또는 함수 선택Pick the best predicate or function

CONTAINS/CONTAINSTABLEFREETEXT/FREETEXTTABLE은 다양한 종류의 일치 값을 찾는 데 유용합니다.CONTAINS/CONTAINSTABLE and FREETEXT/FREETEXTTABLE are useful for different kinds of matching. 다음 표를 사용하여 쿼리에 최적인 조건자 또는 함수를 선택할 수 있습니다.The following table helps you to choose the best predicate or function for your query.

예제는 각 조건자 및 함수의 간단한 예제특정 유형의 검색 예제를 참조하세요.For examples, see Simple examples of each predicate and function and Examples of specific types of searches. 검색 가능 대상도 참조하세요.Also see What you can search for.

CONTAINS/CONTAINSTABLECONTAINS/CONTAINSTABLE FREETEXT/FREETEXTTABLEFREETEXT/FREETEXTTABLE
쿼리 유형Type of query 정확히 또는 부분적으로(덜 정확함) 일치하는 단일 단어 및 구를 찾습니다.Match single words and phrases with precise or fuzzy (less precise) matching. 지정된 단어, 구 또는 문장(freetext 문자열)의 정확한 단어가 아닌 의미를 찾습니다.Match the meaning, but not the exact wording, of specified words, phrases or sentences (the freetext string).

지정된 열의 모든 용어나 용어 형태가 전체 텍스트 인덱스에 있으면 일치하는 항목이 생성됩니다.Matches are generated if any term or form of any term is found in the full-text index of a specified column.
추가 쿼리 옵션More query options 서로 근접한 단어를 지정할 수 있습니다.You can specify the proximity of words within a certain distance of one another.

가중치가 부여된 일치 항목을 반환할 수 있습니다.You can return weighted matches.

논리적 연산을 사용하여 검색 조건을 조합할 수 있습니다.You can use logical operation to combine search conditions. 자세한 내용은 이 항목의 뒷부분에 나오는 부울 연산자 사용(AND, OR 및 NOT)을 참조하세요.For more info, see Using Boolean operators (AND, OR, and NOT) later in this topic.
해당 사항 없음N/a

조건자 및 함수 비교Compare predicates and functions

조건자 CONTAINS/FREETEXT 및 행 집합 반환 함수 CONTAINSTABLE/FREETEXTTABLE은 구문 및 옵션이 다릅니다.The predicates CONTAINS/FREETEXT and the rowset-valued functions CONTAINSTABLE/FREETEXTTABLE have different syntax and options. 다음 표를 사용하여 쿼리에 최적인 조건자 또는 함수를 선택할 수 있습니다.The following table helps you to choose the best predicate or function for your query.

예제는 각 조건자 및 함수의 간단한 예제특정 유형의 검색 예제를 참조하세요.For examples, see Simple examples of each predicate and function and Examples of specific types of searches. 검색 가능 대상도 참조하세요.Also see What you can search for.

조건자Predicates
CONTAINS/FREETEXTCONTAINS/FREETEXT
함수Functions
CONTAINSTABLE/FREETEXTTABLECONTAINSTABLE/FREETEXTTABLE
사용법Usage SELECT 문의 WHERE 또는 HAVING 절에 전체 텍스트 조건자 CONTAINS 및 FREETEXT를 사용합니다.Use the full-text predicates CONTAINS and FREETEXT in the WHERE or HAVING clause of a SELECT statement. SELECT 문의 FROM 절과 같은 일반 테이블 이름처럼 전체 텍스트 함수 CONTAINSTABLE 및 FREETEXTTABLE 함수를 사용합니다.Use the full-text functions CONTAINSTABLE and FREETEXTTABLE functions like a regular table name in the FROM clause of a SELECT statement.
추가 쿼리 옵션More query options LIKE와 BETWEEN 등의 다른 Transact-SQLTransact-SQL 조건자와 결합할 수 있습니다.You can combine them with any of the other Transact-SQLTransact-SQL predicates, such as LIKE and BETWEEN.

검색할 테이블의 단일 열, 열 목록 또는 모든 열을 지정할 수 있으며,You can specify either a single column, a list of columns, or all columns in the table to be searched.

경우에 따라 단어 분리, 형태소 분석, 동의어 사전 조회 및 의미 없는 단어 제거를 위해 지정된 전체 텍스트 쿼리에서 사용할 리소스의 언어를 지정할 수도 있습니다.Optionally, you can specify the language whose resources will be used by the full-text query for word breaking and stemming, thesaurus lookups, and noise-word removal.
이러한 함수 중 하나를 사용하는 경우 검색할 기본 테이블을 지정해야 합니다.You have to specify the base table to search when you use either of these functions. 조건자와 마찬가지로 검색할 테이블의 단일 열, 열 목록 또는 모든 열을 지정할 수 있으며, 경우에 따라 전체 텍스트 쿼리에서 사용할 리소스의 언어를 지정할 수도 있습니다.As with the predicates, you can specify a single column, a list of columns, or all columns in the table to be searched, and optionally, the language whose resources will be used by given full-text query.

일반적으로 CONTAINSTABLE 또는 FREETEXTTABLE 결과는 기본 테이블과 조인해야 합니다.Typically you have to join the results of CONTAINSTABLE or FREETEXTTABLE with the base table. 이렇게 하려면 고유 키 열 이름을 알아야 합니다.To do this, you have to know the unique key column name. 모든 전체 텍스트 사용 테이블에서 생성되는 이 열은 해당 테이블에 고유 행을 강제 적용하는 데 사용됩니다( 고유키 열).This column, which occurs in every full-text enabled table, is used to enforce unique rows for the table (the uniquekey column). 키 열에 대한 자세한 내용은 전체 텍스트 인덱스 만들기 및 관리를 참조하세요.For more info about the key column, see Create and Manage Full-Text Indexes.
결과Results CONTAINS 및 FREETEXT 조건자는 지정된 행이 전체 텍스트 쿼리와 일치하는지 여부를 나타내는 TRUE 또는 FALSE 값을 반환합니다.The CONTAINS and FREETEXT predicates return a TRUE or FALSE value that indicates whether a given row matches the full-text query. 일치하는 행은 결과 집합에 반환됩니다.Matching rows are returned in the result set. 이러한 함수는 전체 텍스트 쿼리와 일치하는 행이 0개, 1개 또는 그 이상 있는 테이블을 반환합니다.These functions return a table of zero, one, or more rows that match the full-text query. 반환된 테이블에는 함수의 전체 텍스트 검색 조건에 지정된 선택 조건과 일치하는 기본 테이블의 행만 포함됩니다.The returned table contains only rows from the base table that match the selection criteria specified in the full-text search condition of the function.

또한 이러한 함수 중 하나를 사용하는 쿼리는 다음과 같이 각 행에 대해 관련성 순위 값(RANK) 및 전체 텍스트 키(KEY)를 반환합니다.Queries that use one of these functions also return a relevance ranking value (RANK) and full-text key (KEY) for each row returned, as follows
  • KEYKEY column. KEY 열은 반환된 행의 고유 값을 반환하며,The KEY column returns unique values of the returned rows. 선택 조건을 지정하는 데 사용할 수 있습니다.The KEY column can be used to specify selection criteria.
  • RANKRANK column. RANK 열은 각 행이 선택 조건과 일치하는 정도를 나타내는 순위 값 을 반환합니다.The RANK column returns a rank value for each row that indicates how well the row matched the selection criteria. 행의 텍스트 또는 문서 순위 값이 높을수록 지정된 전체 텍스트 쿼리에 대한 행의 관련성이 큽니다.The higher the rank value of the text or document in a row, the more relevant the row is for the given full-text query. 또한 여러 행에 동일한 순위가 지정될 수도 있습니다.Note that different rows can be ranked identically. 선택적 top_n_by_rank 매개 변수를 지정하면 반환될 일치 항목 수를 제한할 수 있습니다.You can limit the number of matches to be returned by specifying the optional top_n_by_rank parameter. 자세한 내용은 RANK를 사용하여 검색 결과 제한을 참조하세요.For more information, see Limit Search Results with RANK.
추가 옵션Additional options CONTAINS 또는 FREETEXT 조건자에 네 부분으로 된 이름을 사용하여 연결된 서버의 대상 테이블에 대한 전체 텍스트 인덱싱된 열을 쿼리할 수 있습니다.You can use a four-part name in the CONTAINS or FREETEXT predicate to query full-text indexed columns of the target tables on a linked server. 원격 서버에서 전체 텍스트 쿼리를 받도록 준비하려면 원격 서버의 대상 테이블 및 열에 대한 전체 텍스트 인덱스를 만든 다음 원격 서버를 연결된 서버로 추가합니다.To prepare a remote server to receive full-text queries, create a full-text index on the target tables and columns on the remote server and then add the remote server as a linked server. 해당 사항 없음N/a
추가 정보More info 이러한 조건자의 구문 및 인수에 대한 자세한 내용은 CONTAINSFREETEXT를 참조하세요.For more info about the syntax and arguments of these predicates, see CONTAINS and FREETEXT. 이러한 함수의 구문 및 인수에 대한 자세한 내용은 CONTAINSTABLEFREETEXTTABLE을 참조하세요.For more info about the syntax and arguments of these functions, see CONTAINSTABLE and FREETEXTTABLE.

검색 가능 대상 What you can search for

다음 표에서 검색 가능한 단어 및 구의 유형을 설명합니다.The following table describes the types of words and phrases that you can search for.

쿼리 용어 형태Query-term form DescriptionDescription 지원 요소Supported by
하나 이상의 특정 단어 또는 구One or more specific words or phrases
(단순 용어)(simple term)
예를 들어 "croissant"은 단어이고 "café au lait"는 구입니다.For example, "croissant" is a word, and "café au lait" is a phrase. 이와 같은 단어 및 구를 단순 단어라고 합니다.Words and phrases such as these are called simple terms.

전체 텍스트 검색에서 단어(또는 토큰)는 지정된 언어의 언어 규칙에 따라 적절한 단어 분리기에 의해 경계가 식별되는 문자열입니다.In full-text search, a word (or token) is a string whose boundaries are identified by appropriate word breakers, following the linguistic rules of the specified language. 올바른 는 여러 단어로 구성됩니다. 문장 부호는 있을 수도 있고 없을 수도 있습니다.A valid phrase consists of multiple words, with or without any punctuation marks between them.

자세한 내용은 이 항목 뒷부분의 특정 단어 또는 구(단순 단어) 검색을 참조하세요.For more information, see Searching for Specific word or Phrase (Simple Term), later in this topic.
CONTAINSCONTAINSTABLE 은 정확히 일치하는 구를 검색합니다.CONTAINS and CONTAINSTABLE look for an exact match for the phrase.

FREETEXTFREETEXTTABLE 은 구를 여러 개의 단어로 나눕니다.FREETEXT and FREETEXTTABLE break up the phrase into separate words.
특정 텍스트로 시작하는 단어 또는 그러한 단어를 포함하는 구A word or a phrase where the words begin with specified text
(접두사 용어)(prefix term)
단일 접두사 단어의 경우 지정된 단어로 시작하는 모든 단어가 결과 집합의 일부로 반환됩니다.For a single prefix term, any word starting with the specified term will be part of the result set. 예를 들어 "auto" 단어를 사용하면 "automatic", "automobile" 등이 검색됩니다.For example, the term "auto" matches "automatic", "automobile", and so forth.

구의 경우 구에 포함된 각 단어가 접두사 단어로 간주됩니다.For a phrase, each word within the phrase is considered to be a prefix term. 예를 들어 "auto tran*"은 "automatic transmission" 및 "automobile transducer"와 일치하지만 "automatic motor transmission"과는 일치하지 않습니다.For example, the term "auto tran*" matches "automatic transmission" and "automobile transducer", but it does not match "automatic motor transmission".

접두사 단어는 파생어를 만들거나 굴절형을 만들기 위해 단어 앞에 추가되는 문자열을 말합니다.A prefix term refers to a string that is affixed to the front of a word to produce a derivative word or an inflected form.

자세한 내용은 이 항목 뒷부분의 접두사(접두사 단어) 검색을 참조하세요.For more information, see Performing Prefix Searches (Prefix Term), later in this topic.
CONTAINSCONTAINSTABLECONTAINS and CONTAINSTABLE
특정 단어의 굴절형Inflectional forms of a specific word
(생성 용어 - 굴절형)(generation term - inflectional)
예를 들어 "drive"라는 단어의 굴절형을 검색한다고 가정합니다.For example, search for the inflectional form of the word "drive". 테이블의 여러 행에 "drive", "drives", "drove", "driving", "driven" 등의 단어가 포함되어 있는 경우 이러한 각 단어는 drive라는 단어를 활용하여 생성된 것이므로 모두 결과 집합에 포함됩니다.If various rows in the table include the words "drive", "drives", "drove", "driving", and "driven", all would be in the result set because each of these can be inflectionally generated from the word drive.

굴절형은 동사의 여러 시제 및 변화와 명사의 단수형 및 복수형을 의미합니다.The inflectional forms are the different tenses and conjugations of a verb or the singular and plural forms of a noun.

자세한 내용은 이 항목 뒷부분의 특정 단어의 굴절형(생성 단어) 검색을 참조하세요.For more information, see Searching for the Inflectional Form of a Specific Word (Generation Term), later in this topic.
FREETEXTFREETEXTTABLE 은 기본적으로 지정된 모든 단어의 굴절형을 검색합니다.FREETEXT and FREETEXTTABLE look for inflectional terms of all specified words by default.

CONTAINSCONTAINSTABLE 은 선택적 INFLECTIONAL 인수를 지원합니다.CONTAINS and CONTAINSTABLE support an optional INFLECTIONAL argument.
특정 단어의 동의어 형태Synonymous forms of a specific word
(생성 용어 - 동의어 사전)(generation term - thesaurus)
예를 들어 동의어 사전에 "{car, automobile, truck, van}" 항목을 추가하면 "car"라는 단어의 동의어 형태를 검색할 수 있습니다.For example, if an entry, "{car, automobile, truck, van}", is added to a thesaurus, you can search for the thesaurus form of the word "car". "automobile", "truck", "van" 또는 "car"라는 단어는 각각 "car"라는 단어를 포함하는 동의어 확장 집합에 속하므로 이러한 단어를 포함하는 쿼리된 테이블의 모든 행이 결과 집합에 나타납니다.All rows in the table queried that include the words "automobile", "truck", "van", or "car", appear in the result set because each of these words belong to the synonym expansion set containing the word "car".

동의어 사전은 단어에 대한 사용자 지정 동의어를 정의합니다.A thesaurus defines user-specified synonyms for terms.

동의어 사전 파일의 구조에 대한 자세한 내용은 전체 텍스트 검색에 사용할 동의어 사전 파일 구성 및 관리를 참조하세요.For information about the structure of thesaurus files, see Configure and Manage Thesaurus Files for Full-Text Search.
FREETEXTFREETEXTTABLE 에는 기본적으로 동의어 사전이 사용됩니다.FREETEXT and FREETEXTTABLE use the thesaurus by default.

CONTAINSCONTAINSTABLE 은 선택적 THESAURUS 인수를 지원합니다.CONTAINS and CONTAINSTABLE support an optional THESAURUS argument.
다른 단어나 구와 근접한 단어나 구A word or phrase close to another word or phrase
(근접 용어)(proximity term)
예를 들어 "ice"라는 단어가 "hockey"라는 단어와 근접해 있거나 "ice skating"이라는 구가 "ice hockey"라는 구와 근접해 있는 행을 검색할 수 있습니다.For example, you want to find the rows in which the word "ice" is near the word "hockey" or in which the phrase "ice skating" is near the phrase "ice hockey".

근접 단어는 서로 근접하는 단어나 구를 나타냅니다. 첫 번째 검색 단어와 마지막 검색 단어를 구분하는 검색 대상이 아닌 단어의 최대 개수를 지정할 수도 있습니다.A proximity term indicates words or phrases that are near to each other., You can also specify the maximum number of non-search terms that separate the first and last search terms. 또한 임의의 순서나 지정한 순서로 단어 또는 구를 검색할 수 있습니다.In addition, you can search for words or phrases in any order, or in the order in which you specify them.

자세한 내용은 NEAR를 사용하여 근접 단어 검색을 참조하세요.For more information, see Search for Words Close to Another Word with NEAR.
CONTAINSCONTAINSTABLECONTAINS and CONTAINSTABLE
가중치를 사용하는 단어나 구Words or phrases using weighted values
(가중치 용어)(weighted term)
예를 들어 여러 단어를 검색하는 쿼리에서 각 검색 단어에 검색 조건에 있는 다른 단어에 대한 상대적 중요도를 나타내는 가중치를 할당할 수 있습니다.For example, in a query searching for multiple terms, you can assign each search word a weight value indicating its importance relative to the other words in the search condition. 이러한 쿼리 유형의 결과에서는 검색 단어에 지정한 상대적 가중치에 따라 관련성이 가장 높은 행이 먼저 반환됩니다.The results for this type of query return the most relevant rows first, according to the relative weight you have assigned to search words. 결과 집합에는 지정된 단어(또는 단어 사이의 내용) 중 적어도 하나를 포함하는 문서 또는 행이 반환되지만 일부 결과는 검색된 여러 개의 단어와 관련된 가중치의 차이 때문에 다른 결과보다 관련이 높은 것으로 간주됩니다.The result sets contain documents or rows containing any of the specified terms (or content between them); however, some results will be considered more relevant than others because of the variation in the weighted values associated with different searched terms.

가중치는 단어와 구 집합에서 각 단어와 구의 중요도를 나타냅니다.A weighting value indicates the degree of importance for each word and phrase within a set of words and phrases. 가중치는 0.0이 가장 낮고 1.0이 가장 높습니다.A weight value of 0.0 is the lowest, and a weight value of 1.0 is the highest.

자세한 내용은 이 항목 뒷부분의 가중치를 사용하는 단어 또는 구(가중치 단어) 검색을 참조하세요.For more information, see Searching for Words or Phrases Using Weighted Values (Weighted Term), later in this topic.
CONTAINSTABLECONTAINSTABLE

특정 유형의 검색 예제 Examples of specific types of searches

특정 단어 또는 구(단순 단어) 검색 Search for a specific word or phrase (Simple Term)

CONTAINS, CONTAINSTABLE, FREETEXT또는 FREETEXTTABLE 을 사용하여 테이블에서 특정 구를 검색할 수 있습니다.You can use CONTAINS, CONTAINSTABLE, FREETEXT, or FREETEXTTABLE to search a table for a specific phrase. 예를 들어 데이터베이스의 ProductReview AdventureWorks2012AdventureWorks2012 테이블을 검색하여 "learning curve"라는 구가 포함된 제품 설명을 모두 찾으려면 CONTAINS 조건자를 다음과 같이 사용합니다.For example, if you want to search the ProductReview table in the AdventureWorks2012AdventureWorks2012 database to find all comments about a product with the phrase "learning curve", you could use the CONTAINS predicate as follows:

USE AdventureWorks2012  
GO  

SELECT Comments  
FROM Production.ProductReview  
WHERE CONTAINS(Comments, '"learning curve"')  
GO  

검색 조건(이 경우 "learning curve")은 매우 복잡할 수 있으며 하나 이상의 단어로 구성될 수 있습니다.The search condition, in this case "learning curve", can be quite complex and can be composed of one or more terms.

접두사(접두사 용어)가 포함된 단어 검색 Search for a word with a prefix (Prefix Term)

CONTAINS 또는 CONTAINSTABLE 을 사용하여 지정된 접두사가 포함된 단어나 구를 검색할 수 있습니다.You can use CONTAINS or CONTAINSTABLE to search for words or phrases with a specified prefix. 열에서 지정된 접두사로 시작하는 텍스트가 포함된 모든 항목이 반환됩니다.All entries in the column that contain text beginning with the specified prefix are returned. 예를 들어 top, top``pletop``ping에서와 같이 top- 접두사가 포함된 모든 행을 검색하려면For example, to search for all rows that contain the prefix top-, as in top``ple, top``ping, and top. 다음 쿼리를 사용합니다.The query looks like this:

USE AdventureWorks2012  
GO  

SELECT Description, ProductDescriptionID  
FROM Production.ProductDescription  
WHERE CONTAINS (Description, '"top*"' )  
GO  

별표() 앞에 지정된 텍스트와 일치하는 모든 텍스트가 반환됩니다.All text that matches the text specified before the asterisk () is returned. CONTAINS (DESCRIPTION, 'top*')에서와 같이 텍스트와 별표가 큰따옴표로 구분되지 않은 경우 전체 텍스트 검색은 별표를 와일드카드로 간주하지 않습니다.If the text and asterisk are not delimited by double quotation marks, as in CONTAINS (DESCRIPTION, 'top*'), full-text search does not consider the asterisk to be a wildcard..

접두사 단어가 구일 경우 구에 포함된 각 토큰이 별도의 접두사 단어로 간주되므로When the prefix term is a phrase, each token making up the phrase is considered a separate prefix term. 접두사 단어로 시작하는 단어가 포함된 모든 행이 반환됩니다.All rows that have words beginning with the prefix terms will be returned. 예를 들어 접두사 단어가 "light bread"이면 "light breaded", "lightly breaded", "light bread" 등의 텍스트가 포함된 행이 검색되지만 "lightly toasted bread"는 반환되지 않습니다.For example, the prefix term "light bread" will find rows with text of "light breaded," "lightly breaded," or "light bread," but it will not return "lightly toasted bread".

특정 단어의 굴절형(생성 단어) 검색 Search for inflectional forms of a specific word (Generation Term)

CONTAINS, CONTAINSTABLE, FREETEXT또는 FREETEXTTABLE 을 사용하여 동사의 여러 시제나 변화 또는 명사의 단수형과 복수형을 모두 검색(굴절형 검색)하거나, 특정 단어의 동의어 형태를 모두 검색(동의어 검색)할 수 있습니다.You can use CONTAINS, CONTAINSTABLE, FREETEXT, or FREETEXTTABLE to search for all the different tenses and conjugations of a verb or both the singular and plural forms of a noun (an inflectional search) or for synonymous forms of a specific word (a thesaurus search).

다음 예에서는 Comments 데이터베이스의 ProductReview 테이블에 있는 AdventureWorks 열에서 "foot"의 모든 형태("foot", "feet" 등)를 검색합니다.The following example searches for any form of "foot" ("foot", "feet", and so on) in the Comments column of the ProductReview table in the AdventureWorks database.

USE AdventureWorks2012  
GO  

SELECT Comments, ReviewerName  
FROM Production.ProductReview  
WHERE CONTAINS (Comments, 'FORMSOF(INFLECTIONAL, "foot")')  
GO  

전체 텍스트 검색에서는 동사의 다양한 시제와 변화 또는 명사의 단수형과 복수형을 모두 검색할 수 있는 형태소 분석기를 사용합니다.Full-text search uses stemmers, which allow you to search for the different tenses and conjugations of a verb, or both the singular and plural forms of a noun. 형태소 분석기에 대한 자세한 내용은 검색을 위해 단어 분리기와 형태소 분석기 구성 및 관리를 참조하세요.For more information about stemmers, see Configure and Manage Word Breakers and Stemmers for Search.

가중치를 사용하는 단어 또는 구(가중치 단어) 검색 Search for words or phrases using weighted values (Weighted Term)

CONTAINSTABLE 을 사용하여 단어나 구를 검색하고 가중치를 지정할 수 있습니다.You can use CONTAINSTABLE to search for words or phrases and specify a weighting value. 가중치는 0.0에서 1.0 사이의 숫자로 측정되며 단어와 구 집합에서 각 단어와 구의 중요도를 나타냅니다.Weight, measured as a number from 0.0 through 1.0, indicates the importance of each word and phrase within a set of words and phrases. 가중치 0.0이 가장 낮고 1.0이 가장 높습니다.A weight of 0.0 is the lowest, and a weight of 1.0 is the highest.

다음 예에서는 가중치를 사용하여 문자열 "Bay"로 시작하는 텍스트에 "Street" 또는 "View"가 있는 모든 고객 주소를 검색하는 쿼리를 보여 줍니다.The following example shows a query that searches for all customer addresses, using weights, in which any text beginning with the string "Bay" has either "Street" or "View". 지정한 단어가 많이 포함된 행일수록 높은 가중치가 지정됩니다.The results give a higher rank to those rows that contain more of the words specified.

USE AdventureWorks2012  
GO  

SELECT AddressLine1, KEY_TBL.RANK   
FROM Person.Address AS Address INNER JOIN  
CONTAINSTABLE(Person.Address, AddressLine1, 'ISABOUT ("Bay*",   
         Street WEIGHT(0.9),   
         View WEIGHT(0.1)  
         ) ' ) AS KEY_TBL  
ON Address.AddressID = KEY_TBL.[KEY]  
ORDER BY KEY_TBL.RANK DESC  
GO  

가중치 단어는 단순 단어, 접두사 단어, 생성 단어 또는 근접 단어와 함께 사용할 수 있습니다.A weighted term can be used in conjunction with any simple term, prefix term, generation term, or proximity term.

부울 연산자(AND, OR 및 NOT) 사용 Use Boolean operators (AND, OR, and NOT)

CONTAINS 조건자와 CONTAINSTABLE 함수는 동일한 검색 조건을 사용하며,The CONTAINS predicate and CONTAINSTABLE function use the same search conditions. 둘 다 논리적 연산을 수행하는 부울 연산자 AND, OR, NOT을 사용하여 여러 검색 단어를 결합할 수 있습니다.Both support combining several search terms by using Boolean operators - AND, OR, and NOT - to perform logical operations. 예를 들어 AND를 사용하여 "latte"와 "New York-style bagel"이 둘 다 포함된 행을 찾거나You can use AND, for example, to find rows that contain both "latte" and "New York-style bagel". AND NOT을 사용하여 "bagel"은 포함되지만 "cream cheese"는 포함되지 않은 행을 찾을 수 있습니다.You can use AND NOT, for example, to find the rows that contain "bagel" but do not contain "cream cheese".

반면에 FREETEXT 및 FREETEXTTABLE은 부울 단어를 검색할 단어로 취급합니다.In contrast, FREETEXT and FREETEXTTABLE treat the Boolean terms as words to be searched.

CONTAINS를 논리 연산자 AND, OR 및 NOT을 사용하는 다른 조건자와 결합하는 방법은 검색 조건(Transact-SQL)을 참조하세요.For information about combining CONTAINS with other predicates that use the logical operators AND, OR, and NOT, see Search Condition (Transact-SQL).

예제Example

다음 예제는 CONTAINS 조건자를 사용하여 설명 ID가 5와 같지 않고 "Aluminum"이라는 단어와 "spindle"이라는 단어가 모두 포함된 설명을 검색합니다.The following example uses the CONTAINS predicate to search for descriptions in which the description ID is not equal to 5 and the description contains both the word "Aluminum" and the word "spindle." 검색 조건에는 AND 부울 연산자가 사용됩니다.The search condition uses the AND Boolean operator. 이 예제에서는 AdventureWorks2012AdventureWorks2012 데이터베이스의 ProductDescription 테이블을 사용합니다.This example uses the ProductDescription table of the AdventureWorks2012AdventureWorks2012 database.

USE AdventureWorks2012  
GO  

SELECT Description  
FROM Production.ProductDescription  
WHERE ProductDescriptionID <> 5 AND  
   CONTAINS(Description, 'aluminum AND spindle')  
GO  

추가 쿼리 옵션 More query options

전체 텍스트 쿼리를 작성할 때 다음 옵션도 지정할 수 있습니다.When you write full-text queries, you can also specify the following options.

  • 언어. LANGUAGE 옵션을 사용합니다.Language, with the LANGUAGE option. 많은 쿼리 용어는 단어 분리기 동작에 크게 의존합니다.Many query terms depend heavily on word-breaker behavior. 올바른 단어 분리기(및 형태소 분석기)를 사용하고 있는지 확인하려면 LANGUAGE 옵션을 지정하는 것이 좋습니다.To ensure that you are using the correct word breaker (and stemmer) and thesaurus file, we recommend that you specify the LANGUAGE option. 자세한 내용은 전체 텍스트 인덱스 생성 시 언어 선택을 참조하세요.For more information, see Choose a Language When Creating a Full-Text Index.

  • 대/소문자 구분를 참조하세요.Case sensitivity. 전체 텍스트 검색 쿼리는 대/소문자를 구분합니다.Full-text search queries are case-insensitive. 그러나 일본어에는 철자 표준화 개념이 대/소문자를 구분하지 않는 것과 비슷한 여러 가지 음성 철자법이 있습니다(예: 가나를 구분하지 않음).However, in Japanese, there are multiple phonetic orthographies in which the concept of orthographic normalization is akin to case insensitivity (for example, kana = insensitivity). 이러한 철자 표준화는 지원되지 않습니다.This type of orthographic normalization is not supported.

  • 중지 단어를 참조하세요.Stopwords. 전체 텍스트 쿼리를 정의할 때 전체 텍스트 엔진은 검색 조건에서 중지 단어(의미 없는 단어라고도 함)를 삭제합니다.When defining a full-text query, the Full-Text Engine discards stopwords (also called noise words) from the search criteria. 중지 단어란 "a", "and", "is", "the" 등과 같이 자주 사용되지만 일반적으로 특정 텍스트 검색에는 도움이 되지 않는 단어입니다.Stopwords are words such as "a," "and," "is," or "the," that can occur frequently but that typically do not help when searching for particular text. 중지 단어는 중지 목록에 나열됩니다.Stopwords are listed in a stoplist. 인덱싱할 때 쿼리 또는 인덱스에서 생략된 중지 단어를 확인할 수 있도록 각 전체 텍스트 인덱스는 특정 중지 목록과 연결됩니다.Each full-text index is associated with a specific stoplist, which determines what stopwords are omitted from the query or the index at indexing time. 자세한 내용은 전체 텍스트 검색에 사용할 중지 단어와 중지 목록 구성 및 관리를 참조하세요.For more info, see Configure and Manage Stopwords and Stoplists for Full-Text Search.

  • 동의어 사전.Thesaurus. FREETEXT 및 FREETEXTTABLE 쿼리에는 기본적으로 동의어 사전이 사용됩니다.FREETEXT and FREETEXTTABLE queries use the thesaurus by default. CONTAINS 및 CONTAINSTABLE은 선택적 THESAURUS 인수를 지원합니다.CONTAINS and CONTAINSTABLE support an optional THESAURUS argument. 자세한 내용은 전체 텍스트 검색에 사용할 동의어 사전 파일 구성 및 관리를 참조하세요.For more info, see Configure and Manage Thesaurus Files for Full-Text Search.

토큰화 결과 확인 Check the tokenization results

쿼리에 특정 단어 분리기, 동의어 사전 및 중지 목록 조합을 적용하면 sys.dm_fts_parser 동적 관리 뷰를 사용하여 토큰화 결과를 볼 수 있습니다.After you apply a given word breaker, thesaurus, and stoplist combination in a query, you can view the tokenization results by using the sys.dm_fts_parser dynamic management view. 자세한 내용은 sys.dm_fts_parser(Transact-SQL)를 참조하세요.For more information, see sys.dm_fts_parser (Transact-SQL).

관련 항목:See Also

CONTAINS(Transact-SQL) CONTAINS (Transact-SQL)
CONTAINSTABLE(Transact-SQL) CONTAINSTABLE (Transact-SQL)
FREETEXT(Transact-SQL) FREETEXT (Transact-SQL)
FREETEXTTABLE(Transact-SQL) FREETEXTTABLE (Transact-SQL)
전체 텍스트 검색 쿼리 만들기(Visual Database Tools) Create Full-Text Search Queries (Visual Database Tools)
전체 텍스트 쿼리 성능 향상 Improve the Performance of Full-Text Queries