2011-01-24 4 views
0

SQL Server에서 C# 및 데이터베이스를 사용하고 있습니다. 일반 문자로 잘 작동하는 자동 완성 필드가 있습니다. †, Ä, é, è, ...와 같이 자동 완성 특수 문자의 기능을 추가하고 싶습니다. 'b'와 같은 언어로 비슷한 문자를 식별 할 가능성을 추가하고 싶습니다. 'v'라고 입력하면 'boor'을 입력하면 'voor'가 가능한 제안으로 간주됩니다.자동 완성 c 특수 문자 #

아이디어가 있으십니까?

감사

편집 : 자동 완성 텍스트 상자는 이름과 성씨 (각 하나)에 사용됩니다. 그것들은 AutoCompleteStringCollection으로 만들어졌습니다. 그들은 이미 존재하는 이름이나 성을 데이터베이스에서 검색합니다. 응용 프로그램의이 부분은 기본적으로 응용 프로그램 (이름, 성 등)에 새로운 사람을 추가 할 수있는 가능성을 사용자에게 제공합니다. 목표는 사용자가 응용 프로그램에서 새 사람을 만들 때 입력하는 사람과 비슷한 이름이나 성을 가진 사람과 함께 목록을 가져 오는 것입니다. 그래서 우리는 이미 ' 제임스 스미스 '데이터베이스에서 사용자가 Smyth를 타이핑 할 때 스미스에게 (어쩌면 자동 완성으로) "스미스 (Smith)"를 말하는가? 따라서 우리는 사용자가 잘못된 이름으로 같은 사람을 생성하는 것을 피합니다.

전 세계 사람들의 이름과 성으로 작업하기 때문에 새로운 사람을 만드는 과정에서 발생하는 오류는 모든 언어에서 올 수 있습니다.

PD :

  1. 내 자신의 자동 완성을 만드는 것이 좋습니다 것입니까? 숨기기/텍스트 상자 바로 아래에있는 목록 상자 표시

  2. SOUNDEX 기능은 ö, Ä, é, è ...와 같은 문자에 대해 실제로 잘 작동합니다. 그러나 데이터베이스를 호출 할 수 없습니다. 모든 성이나 성. 그래서 나는 그것을 사용하는 방법을 잘 모른다.

답변

1

자동 완성이란 무엇을 의미합니까? 질문의 두 번째 부분에 대해서는 아마도 SQL Server 기능 SOUNDEX이 필요할 것입니다. 두 문자열의 유사성을 평가하기 위해 4 문자 (SOUNDEX) 코드를 반환합니다.

가 좋아 사용 : 그들은 같은 soundex'es S530S530을 그래서 단어 위

SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe'); 

거의 동일하게 철자. 나는 완전히 확신하지는 않지만 soundex는 다양한 언어로 사용될 수 있다고 생각한다.

+0

'촌뜨기', 'voor': Levenshtein 거리를 사용하여 두 개의 문자열 값 테스트 http://en.wikipedia.org/wiki/Levenstein_distance

사이트 B600 및 V600 –

+0

SOUNDEX ('SHmith') = S530을위한 동일 '스미스'는 정말로 다르게 들린다. 나는 soundex()가 영어 사용을 위해서만 설계되었다고 생각합니다. –

+0

@Dercsar 당신이 옳을지도 모른다는 걱정이 있습니다. OP는 그가 사용하는 언어를 지정하지 않았습니다 (네덜란드어입니까?). 그의 언어에 대한 해결책이 존재 하는지를 알아 내기 위해서는 추가 검색이 필요합니다. – nan

0

불행히도 AutoCompletionSourceAutoCompleteStringCollection으로 사용할 수 있습니다.

그러나 사용자에게 표시 될 내용 (텍스트 상자 자체 아래에 일치하는 항목이있는 상자)은 TextBox에서 완전히 제어되며 어떤 방식 으로든 영향을받을 수 없습니다.

SoundEx() 또는 Levenstein Distance와 같은 것을 사용하더라도 텍스트 상자를 말할 수는 없으므로 항상 String을 만듭니다. 지정된 컬렉션에서 시작하고 선택 영역에서 전체 내용을 바꿉니다. 소스로부터의 선택 값에 의해.

그건 이미 저를 미치게 만들었습니다. 목록의 어떤 항목이 사용자에게 표시되는지 실제로 영향을 줄 수는 없으며 상자의 일부 항목을 선택하면 어떤 일이 발생할지 영향을 미칠 수 없습니다.

0

나는 Levenshtein 거리를 조사 할 것이다.

Soundex는 오히려 원시적입니다. 원래 손으로 계산되도록 개발되었습니다. 그 결과 키가 생겨 서구의 이름과 성에서 잘 작동합니다.

Levenshtein distance는 두 개의 문자열 값을보고 유사도에 따라 값을 생성합니다. 빠진 문자 나 대체 된 문자를 찾고 있습니다 (SoundEx와 같은 소리 나는 비교가 없습니다).

위키 참조 : http://gtools.org/levenshtein-calculate.php