나는 이것에 대해 생각하고 예를 들어 사용자가 철자 실수를 입력하는 경우 데이터베이스를 퍼지 검색하는 방법에 대한 솔루션을 생각해 내려고 노력했습니다. 이것 뒤에 논리에 눈부신 문제가 있습니까? 작동하고 이전에 수행 되었습니까?
우리가 검색하고자하는 테이블 :
**tblArticles**
Body - Soundex_Body - CharacterCoded_Body
따라서 실제 표시를 위해 원본 텍스트를 저장합니다. 다른 두 열은 다음과 같은 방식으로 사전 계산 된 검색에 사용됩니다.
Soundex
몸은 단어로 나뉘어지고 soundex 버전으로 번역됩니다. IE, 결과 본문은 다음과 같습니다.
H252 B54 C23 E33... etc
따라서 누군가는 'dinosore'에 들어갈 수 있으며 기사 본문에는 'dinosaur'가 있으며 둘 다 B26으로 평가됩니다. 그런 다음 검색어의 soundex 값에 대해 LIKE를 실행합니다.
문자 코드
문자를 소수로 매핑하는 문자 매핑이 주어지면 IE는 다음과 같습니다.
h = 2
e = 3
l = 5
o = 7
p = 11
c = 13
help = 2*3*5*11 = 330
hello = 2*3*5*5*7 = 1050
hell = 2*3*5*5 = 150
hlep = 2*5*3*11 = 330
cello = 13*3*5*5*7 = 6825
사용자가 'hello'를 입력하려고했지만 'hlelo'와 같이 둘 이상의 문자를 전환 한 경우 동일한 숫자로 평가됩니다. 원시를 단어로 분할하고 모든 단어를 프라임 인코딩하고 데이터베이스에 저장하여 다음과 같은 필드를 제공합니다.
330 6825 330 1050... etc
그런 다음이 값을 검색하여 잘못된 유형과 일치시킬 수 있습니다.
혜택
- 오타 방지
- 발음이 잘못된 철자법
- 영어 이외의 비영어권
- soundex가 작동하는 모든 언어로 작동합니다
의견과 생각? 일종의 다층 검색. 물론 가중치 반환 값을 더 좋게 만들 수 있습니다 (즉, 문자 본문 일치가 더 가치가 있음). 이것은 철자 오류 및 영어를 모국어가 아닌 사람들이 검색을 수행하는 데 적합한 솔루션입니까?