private static Map<String, List<String>> generate_result(Directory directory) { Map<String, List<String>> result_map = new HashMap<String, List<String>>(); try { IndexReader reader = IndexReader.open(directory); TermEnum termEnum = reader.terms(); while (termEnum.next()) { String termEnumString = termEnum.term().toString(); if (termEnumString.startsWith("content:")) { String term = termEnumString.substring(termEnumString.lastIndexOf(":") + 1); TermDocs termDocs = reader.termDocs(termEnum.term()); while (termDocs.next()) { Document doc = reader.document(termDocs.doc()); String relative_path = doc.get("relative_path"); if (result_map.containsKey(relative_path)) { result_map.get(relative_path).add(term + termDocs.freq()); } else { result_map.put(relative_path, new ArrayList<String>()); } } } } } catch (IOException e) { e.printStackTrace(); } finally { } return result_map; }
public MyTerm(Term originTrem, TermDocs termDocs, int maxDocNum) throws IOException { super(); this.originTrem = originTrem; this.termDocs = termDocs; this.totalFreq = 0; while (this.termDocs.next()) { int docNum = termDocs.doc(); int freq = termDocs.freq(); this.termMap.put(docNum, freq); this.totalFreq += freq; } this.vector = new int[maxDocNum]; for (int i = 0; i < maxDocNum; i++) { this.vector[i] = 0; } for (int k : this.termMap.keySet()) { this.vector[k] = (int) this.termMap.get(k); } }