none
SELECT WHERE CONTAINS VS SELECT WHERE LIKE RRS feed

  • 질문

  • 제가 최근에 SELECT LIKE를 사용하여 검색을 하다가 결과를 얻는 것이 오래걸려

     

    CONTAINS를 이용하여습니다. MS SQL에서 전체텍스트 인덱싱을 하니 관련 쿼리를

     

    사용할 수 있더군요, 근데 문제는 LIKE문과 결과가 다르게 나온다는 것입니다.

     

    SELECT *

    FROM [데이터베이스]

    WHERE CONTAINS(자원명, '참고래')

     

     

    SELECT *

    FROM [데이터베이스]

    WHERE CONTAINS(자원명, ' "참고래*" ')

     

    SELECT *

    FROM [데이터베이스]

    WHERE CONTAINS(자원명, ' "*참고래*" ')

     

    상기 결과와

     

    SELECT *

    FROM [데이터베이스]

    WHERE CONTAINS(자원명, ' 참고 ')

     

    의 결과가 같게 나옵니다. 인덱싱 키워드 자료를 보니 참고라는 인덱싱 키워드가 잡혀

    위의 쿼리와 같은 결과가 나오는것 같은데 실제 디비에는 참고래라는 단어를 포함하는

    데이터는 없습니다. 정확한 키워드매칭에 해당하는 결과만 받을 수 있도록 하는

    방법이 없는지요? 즉 참고로 검색하면 '참고'가 포한된 데이터만, '참고래'라고 검색하면 참고래라고 포함된

    데이터만 나올 수 있도록 하는 방법은 없는 건가요? CONTAINS 알면 알수록 참 심오하네요

     

    2014년 1월 16일 목요일 오전 6:14

모든 응답

  • CONTAINS 자체로만은 불가능합니다.

    CONTAINS(Transact-SQL) 는 특정 단어 또는 구와 정확히 일치하거나 비슷하게 일치하는 단어를 검색하거나 서로 근접한 단어를 검색하거나 가중치 검색을 수행합니다.            

    WHERE 절에 사용되는 조건자입니다

    CONTAINS는 다음을 검색할 수 있습니다.                         

    • 단어나 구                              

    • 단어나 구의 접두사                               

    • 다른 단어에 근접한 단어                               

    • 다른 단어에서 어미를 변화하여 생성된 단어(예: drive라는 단어는 drives, drove, driving, driven의 어간임)                              

    • 동의어 사전을 사용할 때 다른 단어의 동의어인 단어(예: "metal"이라는 단어에는 "aluminum" 및 "steel" 같은 동의어가 있을 수 있음     

    제시해 드린 답변이 도움이 되었기를 바랍니다.
     
    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다


    2014년 1월 16일 목요일 오전 7:12
    중재자