2011-04-12 8 views
0

나는 영어로 된 원어민이 아니며 결과를 찾는 데 어려움을 겪을 수있는 전 세계 많은 사용자가 모여 있기 때문에 포럼 게시물이 있으며 기본적인 검색 기능을 향상시키고 싶습니다. 그들은 철자가 잘못되었습니다. 현재 포럼 검색은 정확합니다.soundex 기반 검색을 설계하는 가장 좋은 방법

어떤 디자인이 가장 좋을까요? 데이터베이스에 50 만 개의 레코드가 있고 검색이 자주 사용된다고 가정하십시오. 이상적으로는 모든 레코드를 검색하고 싶습니다.

디자인 측면을 따라

각 포럼 게시물, 나는 모든 SOUNDEX 데이터를 포함하는, soundex_post 저장합니다. 검색을 실행하면 모든 검색 용어가 표시되고 soundex 필드에 LIKE 연산이 수행됩니다.

디자인 두

나는 그것을 정상화. 모든 soundex 코드는 새 테이블 인 tblSoundexCodes에 저장됩니다. 그러면 표가 있습니다. tblForumPostSoundexCodes :

ID | Post_ID | SoundexCode_ID | 사운 덱스가 검색 될 때 단순히 빠른 상당히있을 것 SoundexCode_ID = N

이 있습니까 내가 그 방법 두 가지를 해결하는 모든 Post_IDs를 꺼내, 그리고

를 계산하지만, 열심히에 많이 될 것 유지 보수 (IE, 사람들이 게시물을 편집 할 때).

+0

대상 데이터베이스가 무엇입니까? 오라클의 경우 soundex 검색이 이미 제공됩니다. –

+0

@Frank는 MSSQL이며, 아마도 익스프레스 에디션 일뿐입니다. 예를 들어 soundex를 사용하여 아마도 최신 알고리즘을 구현할 것입니다 –

답변

1

디자인 2가 더 좋습니다.

디자인 2는 더 빠를 것입니다. 데이터 저장소가 더 작아지고 tblForumPostSoundexCodes에 행을 업데이트하거나 삽입하고 누군가가 게시물을 작성하거나 업데이트 할 때 tblSoundexCodes에 행을 삽입해야합니다.

이 soundex 트랜잭션 처리가 모든 게시물 변경 (생성, 업데이트, 삭제)에 대해 수행되는지 확인해야합니다.

1

귀하의 아이디어에 대해 약간의 의문이 있습니다.

의이 의견 중 하나에 자신의 답을 보자 :

"@Frank은 MSSQL, 아마 단지 Express Edition을 될 것입니다, 나는 내가 아마 더까지 구현됩니다 예를 들어 사운 덱스를 사용 날짜 알고리즘 "

이 간단한 설명에는 15 단어가 있습니다 (4 문자보다 짧은 문자는 버립니다). 그래서 여기에 "1"이라는 값으로 가리키는 15 개의 다른 레코드가 있습니다.

영어가 모국어가 아닌 사람이 ("esample" "dait") 검색을 결정하면 어떻게됩니까? 한 단어 이상을 검색 할 수 있습니까? and-? 또는-? 아니-?

검색을있는 그대로 실행하고 "예제 및 날짜"를 찾고있는 것이 더 좋지 않습니까? " Google 또는 Wikipedia와 같은 기능을합니까?

관련 문제