2012-04-10 3 views
0

검색 엔진을 구축 중입니다. 저는 NoSQL 다양한 키 - 값 데이터 저장소, 특히 Amazon SimpleDB를 사용하고 있으며 일반적인 RDBMS는 아닙니다. 웹 페이지를 가리키는 URL 테이블이 있습니다. 나는 어떤 페이지에 주어진 영어 단어가 들어 있는지 찾아 볼 수있는 또 다른 테이블을 만들어야한다고 생각한다.NoSQL Datastore의 조회에 영어 단어가 사용 되었습니까?

이 테이블의 구조는 다음과 같습니다 Search (String word, String URL) 내 쿼리가 그들과 조회에 저장하기 전에

나는 단어를 해시해야 select from Search where word = "foo"과 같을 것이다? I. e. 테이블을 사용해야합니까 : Search (String word_hash, String URL)select from Search where word = "acbd18db4cc2f85cedef654fccc4a4d8"

답변

-1

일반적인 경우 배심원이 있습니다. 데이터베이스가 내부적으로 해시되는 것처럼 보일지라도 중요한 counter-example은 분명히 있습니다 : "com.example.foo/*.html"과 같은 URL 키가 함께 클러스터링되도록하는 특정 이점으로 나열된 BigTable Google 검색 색인을 쉽게 만들 수 있습니다. (자세한 내용은 빅 테이블 보고서 참조).

1

연습 문제로하지 않는 한 자신 만의 빌드를 사용하지 마십시오. sphinx 또는 비슷한 것을 사용하십시오.

운동이 인 경우 야망을위한 포인트! 검색 엔진은 큰 프로젝트입니다.

나는 자신을 해싱 할 때 가치가 없다. 해시 테이블은 이미 내부적으로 수행합니다 (해시 테이블 임). 나중에 기본 맞춤법 교정을하거나 "책"이 "책"과 일치하도록 허용 할 수 있으며 그 시점에서 일반 텍스트 단어를 갖는 데 도움이됩니다.

+0

Amazon SimpleDB는 내부적으로 해싱을 수행합니까? AppEngine과 같은 다른 퍼시스턴스 제공자도 똑같이합니까? – necromancer

+0

예, 모두 수행 할 수 있지만 구현 세부 사항입니다. 그들은 (개념적으로) 큰 온라인 해쉬 테이블 (http://en.wikipedia.org/wiki/Hash_table)입니다. –

+0

원래 질문에 구체적으로 대답하려면 아니요, 문자열을 저장하기 전에 문자열을 해시하지 마십시오. –

관련 문제