2011-01-20 2 views
0

SQL Server 2008 및 전체 텍스트 검색을 사용하여 Google과 같은 자동 완성 검색 상자를 구현하려고합니다.SQL Server 전체 텍스트 검색 단일 결과 열 여러 열에서 검색

내가 검색하고자하는 3 개의 열이 있는데 적절한 인덱스를 만들었지 만 그럴 수 없다고 해봅시다.

열이 나는 모든 세 개의 열에서 일치하는 항목을 검색하고 적절한 검색어를 제안 할 사용자 입력의 제품 이름, ProductNumber 및 색상 ...

이다.

그래서 같은 (

ID가 색상 열과 다른 두 열의 또한 모든 경기에서 올 "블랙", "블루"와 같은 단일 컬럼 containtng 결과를 반환하고 싶은 사용자가 "BL"를 입력 시작했다고 가정 ProductNumber : BL2300)

그래서 기본적으로 여러 열을 검색하여 하나의 열을 결과로 반환해야합니다. 이것을 할 수있는 방법이 있습니까?

답변

4

당신이 다른 컬럼에 전체 텍스트 인덱스를 만든 경우 영업 이익의 때라도 코멘트 업데이트 다음은 간단한 사용 CONTAINS 또는 FREETEXT 그들 중 하나, 모두, 또는 그 중 일부 볼 수밖에 있습니다. 이와 같이 :

SELECT * 
FROM YourTable 
WHERE CONTAINS(*, @SearchTerm); 

FULLTEXT INDEX에 포함 된 모든 열을보고 싶다면. 또는 :

SELECT * 
FROM YourTable 
WHERE CONTAINS((ProductName, ProductNumber, Color), @SearchTerm); 

검색 할 열을 지정하려는 경우. 한 열에 결과가 필요한 경우 UNION을 수행하고 검색하려는 모든 열을 검색해야합니다.

SELECT * 
    FROM YourTable 
    WHERE CONTAINS(ProductName, @SearchTerm) 
    UNION 
    SELECT * 
    FROM YourTable 
    WHERE CONTAINS(ProductNumber, @SearchTerm) 
    UNION 
    SELECT * 
    FROM YourTable 
    WHERE CONTAINS(Color, @SearchTerm) 
+0

네하지만 문제는 그 이후? 아마도 세 개의 열 – stephen776

+0

stephen776 @ 어떻게 당신이 다른 컬럼에서 가능한 여러 결과를 연결할 것 중 하나 이상에서 올 수있는 결과의 단일 열을 반환 할 필요가있다 당신은 하나의 열에 결과를 원한다 – Lamak

+0

네, 그건 내 질문입니다 ... – stephen776

1

당신이

SELECT * FROM Table WHERE ProductName LIKE @SearchTerm + '%' 
UNION 
SELECT * FROM Table WHERE ProductNumber LIKE @SearchTerm + '%' 
UNION 
SELECT * FROM Table WHERE Color LIKE @SearchTerm + '%' 

처럼 뭔가를 하나의 열을 연결할 필요가없는 경우가에서 시작하기 좋은 지점입니다.

관련 문제