나는 단어가 나타난 페이지의 데이터, 페이지의 단어의 빈도 및 위치를 포함하는 용어의 HashMap을 보유하고 있습니다.역 색인을 이진 파일에 저장하는 방법은 무엇입니까?
예 : 워드 - [페이지 번호, 페이지에서 단어 빈도, 페이지 위치]
cat [1, 3, 1, 2, 5 ], [2, 2, 2, 5 ]
dog [2, 2, 1, 7 ]
어떻게 다시 읽기 쉬운 바이너리 파일에이 정보를 저장하는 것? 사전에
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(baos);
for(String word: invertedIndex.keySet()) {
out.writeUTF(word); // Write the word
for(Entry entry: invertedIndex.get(word)) { // Info for a page
out.writeInt(entry.pageNum); // Write its page number
out.writeInt(entry.wordFrequency); // Write its freq in that page
for(int position: entry.positions) {
out.writeInt(position); // Write the positions
}
}
}
byte[] bytes = baos.toByteArray();
FileOutputStream fos = new FileOutputStream(PATH);
fos.write(bytes);
fos.close();
이 맞는지 확실하지 ... 감사 :
나는 다음과 같은 시도를했다.편집 : 고마워, 내 문제가 밝혀지면이 코드를 디코딩하는 방법에 대해 자세히 설명합니다.
왜'Map'을 직렬화하지 않을까요? 즉,'ObjectOutputStream'을 사용하십시오. – Andreas
@Andreas 이것은 할당을위한 것이며 "단순히 직렬화 된 Java 객체를 디스크에 쓰지 마라"는 말을 들었습니다. 바이너리로이 데이터 구조를 보존하는 방법이 있습니까? –
* "이 데이터 구조를 유지할 수있는 방법이 있습니까?"* 예 ... 코드를 작성합니다. 당신은 코드를 작성했습니다. 당신의 실제 질문은 무엇입니까? –