NEAR를 사용하여 다른 단어에 가까운 단어 검색

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

CONTAINS 조건자 또는 CONTAINSTABLE 함수에서 NEAR 근접 용어를 사용하여 서로 가까운 단어 또는 구를 검색할 수 있습니다.

NEAR 개요

NEAR 에는 다음과 같은 기능이 있습니다.

  • 첫 번째 검색어와 마지막 검색어를 구분하는 비 검색어의 최대 수를 지정할 수 있습니다.

  • 어떤 순서로든 단어나 구를 검색하거나 특정 순서로 단어와 구를 검색할 수 있습니다.

  • 일치 항목을 구성하기 위해 첫 번째 검색어와 마지막 검색어를 구분하는 최대 검색 용어 수 또는 최대 거리를 지정할 수 있습니다.

  • 최대 단어 수를 지정하는 경우 일치 항목이 지정된 순서로 검색 단어를 포함하도록 지정할 수도 있습니다.

일치 항목으로 한정하려면 텍스트 문자열이 다음을 수행해야 합니다.

  • 지정된 검색어 중 하나로 시작하고 지정된 다른 검색어 중 하나로 끝납니다.

  • 지정된 검색 단어를 모두 포함합니다.

  • 첫 번째 검색어와 마지막 검색 단어 사이에 발생하는 중지 단어를 포함한 비 검색 용어의 수는 최대 거리를 지정한 경우 최대 거리보다 작거나 같아야 합니다.

NEAR 구문

NEAR의 기본 구문은 다음과 같습니다.

 NEAR (  
  
 {  
  
 *search_term* [ ,...*n* ]  
  
 |  
  
 (*search_term* [ ,...*n* ] ) [, <maximum_distance> [, <match_order> ] ]  
  
 }  
  
 )  

구문에 대한 자세한 내용은 CONTAINS(Transact-SQL)를 참조하세요.

예제

예 1

예를 들어 다음과 같이 'Smith'의 두 용어 내에서 'John'을 검색할 수 있습니다.

... CONTAINS(column_name, 'NEAR((John, Smith), 2)')

일치하는 문자열의 몇 가지 예는 "John Jacob Smith" 및 "Smith, John"입니다. 문자열 "John Jones knows Fred Smith"은 세 개의 중간 비 검색어를 포함하므로 일치하지 않습니다.

지정된 순서로 용어를 찾도록 하려면 예제 근접 용어를 NEAR((John, Smith),2, TRUE). ""의 두 용어 내에서 ""를 검색하지만 "John"가 "Smith"보다 앞에 오는 경우에만John "Smith"를 검색하도록 변경합니다. 영어와 같이 왼쪽에서 오른쪽으로 읽는 언어에서 일치하는 문자열의 예는 "John Jacob Smith"입니다.

아랍어나 히브리어와 같이 오른쪽에서 왼쪽으로 읽는 언어에서는 전체 텍스트 엔진이 지정된 단어를 반대 방향으로 적용합니다. 또한 SQL Server Management Studio의 개체 탐색기 오른쪽에서 왼쪽 언어로 지정된 단어의 표시 순서를 자동으로 반대로 바뀝니다.

예제 2

다음 예제에서는 샘플 데이터베이스의 AdventureWorks 테이블에서 "대괄호"라는 단어와 같은 문서에 "reflector"라는 단어가 포함된 모든 문서 요약을 검색 Production.Document 합니다.

SELECT DocumentNode, Title, DocumentSummary  
FROM Production.Document AS DocTable   
INNER JOIN CONTAINSTABLE(Production.Document, Document,  
  'NEAR(bracket, reflector)' ) AS KEY_TBL  
  ON DocTable.DocumentNode = KEY_TBL.[KEY]  
WHERE KEY_TBL.RANK > 50  
ORDER BY KEY_TBL.RANK DESC;  
GO  

최대 거리 측정 방법

10 또는 25와 같은 특정 최대 거리는 지정된 문자열의 첫 번째 검색어와 마지막 검색 단어 사이에 발생할 수 있는 중지 단어를 포함하여 검색되지 않는 용어 수를 결정합니다. 예를 들어 검색되지 않는 용어의 총 수가 3개("", NEAR((dogs, cats, "hunting mice"), 3) "enjoy"but 및 "avoid")인 다음 행을 반환합니다.

"Catsenjoyhunting mice``, but avoiddogs``."

최대 거리가 4개의 비 검색어("", ""butusually, "" 및 "avoid"enjoy)를 초과하므로 동일한 근접 용어는 다음 행을 반환하지 않습니다.

"Catsenjoyhunting mice``, but usually avoiddogs``."

NEAR를 다른 용어와 결합

NEAR를 다른 용어와 결합할 수 있습니다. AND(&), OR(|) 또는 AND NOT(&!)을 사용하여 사용자 지정 근접 용어를 다른 사용자 지정 근접 용어, 간단한 용어 또는 접두사 용어와 결합할 수 있습니다. 예시:

  • CONTAINS('NEAR((term1, term2),5) AND term3')

  • CONTAINS('NEAR((term1, term2),5) OR term3')

  • CONTAINS('NEAR((term1, term2),5) AND NOT term3')

  • CONTAINS('NEAR((term1, term2),5) AND NEAR((term3, term4),2)')

  • CONTAINS('NEAR((term1, term2),5) OR NEAR((term3, term4),2, TRUE)')

예를 들면 다음과 같습니다.

CONTAINS(column_name, 'NEAR((term1, term2), 5, TRUE) AND term3')  

NEAR를 세대 용어(ISABOUT ...) 또는 가중 용어(FORMSOF ...)와 결합할 수 없습니다.

근접 검색에 대한 자세한 정보

  • 검색어의 겹치는 항목

    모든 근접 검색은 항상 겹치지 않는 항목만 찾습니다. 검색어의 겹치는 항목은 일치 항목으로 한정되지 않습니다. 예를 들어 다음 근접 용어를 고려합니다. 이 용어는 최대 거리가 2개인 이 순서로 "A" 및 "AA"를 검색합니다.

    CONTAINS(column_name, 'NEAR((A,AA), 2, TRUE)')
    

    가능한 일치 항목은 "", "AAAA.AA" 및 "A..AA"입니다. "AA"만 포함하는 행은 일치 항목이 아닙니다.

    참고 항목

    예를 들어 NEAR("mountain bike", "bike trails") 또는 (NEAR(comfort*, comfortable), 5)와 같이 겹치는 단어를 지정할 수 있습니다. 겹치는 용어를 지정하면 가능한 일치 순열을 늘려 쿼리의 복잡성이 증가합니다. 이러한 겹치는 용어를 많이 지정하면 쿼리에 리소스가 부족하여 실패할 수 있습니다. 이런 경우 쿼리를 단순화한 다음 다시 시도하십시오.

  • NEAR(최대 거리 지정 여부에 관계없이)는 용어 간의 절대 거리가 아닌 용어 사이의 논리적 거리를 나타냅니다. 예를 들어 단락 내의 다른 구 또는 문장 내의 용어는 관련성이 낮다는 가정 하에 실제 근접성 여부에 관계없이 동일한 구 또는 문장의 용어보다 멀리 떨어져 처리됩니다. 마찬가지로, 다른 단락의 용어는 더 멀리 떨어져 있는 것으로 취급됩니다. 일치 항목이 문장, 단락 또는 장의 끝에 걸쳐 있는 경우 문서 순위를 지정하는 데 사용되는 간격은 각각 8, 128 또는 1024로 증가합니다.

  • CONTAINSTABLE 함수의 순위에 근접 용어의 영향

    CONTAINSTABLE 함수에서 NEAR를 사용하는 경우 각 적중 항목의 첫 번째 검색어와 마지막 검색어 사이의 거리뿐만 아니라 길이를 기준으로 문서의 적중 횟수는 각 문서의 순위에 영향을 줍니다. 일반적인 근접 용어의 경우 일치하는 검색 용어가 >50개의 논리적 용어를 제외한 경우 문서에서 반환되는 순위는 0입니다. 정수를 최대 거리로 지정하지 않는 사용자 지정 근접 용어의 경우 간격 >이 100인 논리적 용어인 적중 항목만 포함된 문서는 0의 순위를 받습니다. 사용자 지정 근접 검색 순위에 대한 자세한 내용은 RANK를 사용하여 검색 결과 제한을 참조 하세요.

  • 노이 즈 단어 변환 서버 옵션

    변환 노이즈 단어값은 SQL Server가 근접 검색에 지정된 경우 중지 단어를 처리하는 방법에 영향을 줍니다. 자세한 내용은 노이즈 단어 변환 서버 구성 옵션을 참조 하세요.

참고 항목

CONTAINS(Transact-SQL)
CONTAINSTABLE(Transact-SQL)
전체 텍스트 검색을 사용한 쿼리