단어 빈도 수를 저장하고 쿼리 할 수있는 좋은 디자인에 대한 공동체 의견을 제시하고자합니다. 나는 텍스트 입력을 구문 분석하고 단어가 몇 번 나왔는지 (시간이 지남에 따라) 저장해야하는 응용 프로그램을 만들고 있습니다. 그래서 주어진 다음 입력 :단어 빈도 추적/계산
- "조롱 조류를 죽일 놈"
다음 값 저장겠습니까 "피아노 플레이어 도발"
Word Count
-------------
To 1
Kill 1
A 2
Mocking 2
Bird 1
Piano 1
Player 1
그리고 나중에 일을 주어진 임의 단어의 카운트 값을 신속하게 쿼리 할 수 있습니다.
내 현재 계획은 단순히 단어와 카운트를 데이터베이스에 저장하고 단어 수 값 캐싱에 의존하는 것입니다.하지만이 방법을 장기적으로 실행하기에 충분한 캐시 적중률을 얻지 못할 것으로 생각됩니다.
누구나 알고리즘이나 데이터 구조 또는이를 잘 구현할 수있는 다른 아이디어를 제안 할 수 있습니까? 내가하지이 그것을 할 수있는 방법은 이라고 말하고
void map(String name, String document):
for each word w in document:
EmitIntermediate(w, "1");
void reduce(String word, Iterator partialCounts):
int result = 0;
for each pc in partialCounts:
result += ParseInt(pc);
Emit(AsString(result));
, 그러나 그것은 확실히이다 :