2011-08-12 4 views
0

SQL 테이블에서 결과를 얻는 방법.
내 응용 프로그램에서 전체 텍스트 검색을 사용했습니다. 예를 들어SQL 서버에서 단어별로 레코드를 필터링하는 방법은 무엇입니까?

사용자가 "다양한 이벤트"와 같은 단어를 입력하면 :
나는 싶어. 결과는 아래의 순서대로되어야합니다. 전체 단어 "다양한 이벤트"다음

  • "위대한"관련 결과 다음
  • "이벤트"관련 결과에 관한

    1. 첫 번째 결과.

    첫 번째 결과는 전체 검색어 "위대한 이벤트"에 대한 모든 업데이트가되어야합니다.

    당신이 이러한 결과를 보여 후에 만 ​​다음 용어 "다양한 이벤트"와 업데이트, "큰 행사"등을 표시 기본적으로
    용어 "위대한 이벤트"를 포함하는 단어.

    그런 다음 "Great"및 "Events"라는 단어와 변형을 가진 업데이트의 결과를 보여줍니다.
    마지막으로, 두 단어 중 하나가 업데이트에서 쇼 결과 ...

    내 테이블을 추천했습니다 : 열

    UserUpdates


    은을 UpdateID -
    MsgText을 int로 -
    사용자 ID를 int로 - nvarchar (500)
    CreatedOn - 날짜 시간

    SQL 스크립트를 사용하는 방법 ..?

  • +0

    검색 표현식의 단어 수에 대해서도 동적으로 나타내시겠습니까? 와일드 카드를 허용합니까? –

    +0

    예. 사용자가 검색 텍스트 상자에 들어가면 전체 텍스트 .....만큼 결과를 얻습니다. 와일드 카드 의미를 허용합니까? –

    +0

    와일드 카드 허용은 사용자가 "Great Event *"에 대한 예를 검색 할 수 있음을 의미합니다. *는 단어를 끝내기 위해 *로 바꿀 수 있습니다. –

    답변

    1

    이 문제를 해결하기 위해 전체 텍스트 카탈로그를 만들고 테이블에 전체 텍스트 색인을 추가 할 수 있습니다.

    이렇게하면 간단한 구문 분석기를 사용하여 검색어를 가져와 검색 키워드를 만들 수 있습니다. 같은에 "큰 이벤트"에 대한 검색을 돌려 :

    ' "큰 행사"OR (위대한 및 이벤트)'

    당신보다 해당 검색 키워드에 따라,이 같은 쿼리를 만들 수 있습니다

    :

    CONTAINSTABLE FROM

    SELECT * ([YourFullTextIndexTable], *, ''위대한 사건 "OR (위대한 및 이벤트) ', 2057,0) RANK DESC BY ORDER은

    위 영국 (2057) 영어 기본입니다 stoplist (0).

    "위대한 이벤트"가있는 레코드를 먼저 구문으로 표시하고 그레이트 및 이벤트가있는 레코드를 어딘가에 반환합니다.

    +0

    감사합니다. 나는 이미 전체 텍스트를 만들었습니다 .. 당신이 'Great and Events'와 같이 동적으로 쿼리를 생성 할 수 있습니까? 사용자가 'Abc def ghi'와 같이 검색하면 단어를 분리하고 쿼리에 추가해야합니다. –

    관련 문제