2009-06-11 2 views
0

SQL Server 데이터베이스에 두 개의 필드가있는 테이블이 있고 asp.net 응용 프로그램에서 '@SearchString'매개 변수가있는 저장 프로 시저를 호출하고 저장 프로 시저가 @Searchstring 값이 테이블의 두 필드의 연결에서 발견되는 '필드 1'을 부르고 '필드 2'저장 프로 시저에 사용하기위한 간단한 텍스트 일치 알고리즘

그래서 로직 (I 실제 쿼리를 단순화) 다음과 같습니다

CREATE PROCEDURE [dbo].[sp_FindMatches] @SearchString varchar(30) 
AS 
    SELECT * FROM Table1 WHERE Field1+Field2 LIKE @SearchString 

나는 그것이 일치하는 레코드에서 그렇게 제한적이지 않도록이 기본적인 매칭 알고리즘을 개선하고 싶다. 예를 들어 사용자가 "DOG HOUSE"를 매개 변수로 입력하면 기존 SP의 오히려 기본 논리가 정확한 문자열을 찾는 레코드를 반환합니다. "DOG"와 "HOUSE"를 사용하여 문자열이 서로 정확하게 나란히 있지 않더라도 레코드를 반환하기를 바랍니다.

'베스트 매치'의 관점에서 레코드의 순위를 매기는 방법이 있다면 더 좋을 것입니다. 즉, "개집원"이 정확히 일치하는 것으로 확인되면 "개가"와 "집" 개 "경우가 아니라 세 번째 '집'또는 '집'이 아닌 '개', 두 번째 최고의 경기, 발견되는 가장 등

내가 원하는 걸의 대부분을 수행하는 일반적인 알고리즘이 있습니까?

답변

2

당신 전체 텍스트 검색을 참조해야합니다. 정확히 구체적으로 당신이 요구하는 것을 수행하도록 설계되었으며 매우 잘 수행됩니다.

전통적인 TSQL wil을 사용하여 구현 한 방법 영향을받는 열의 색인을 완전히 사용할 수 없게합니다.

그리고 전체 텍스트 검색을 두려워하지 마십시오. 설정이 놀랍도록 간단합니다.

0

두 열을 연결하는보기를 만들고 저장 프로 시저를 통해 해당보기에서 전체 텍스트 검색을 사용합니다.

관련 문제