Ich möchte einen invertierten Index in Java erstellen. Ich habe Daten von 1400 Textdateien. Ich konnte die Häufigkeit jedes Begriffes/Wortes zählen. Ich konnte die Anzahl der Wörter in der gesamten Sammlung zurückgeben, aber ich konnte nicht zurückgeben, in welchen Dokumenten das Wort angezeigt wird. Dies ist der Code, den ich bisher habe:Wie erstellt man invertierten Index in Java
Ich möchte die Ausgabe in die folgende Form term1: DOC1: 2, doc2: 3 term2: DOC1: 3, DOC4: 1 ............... usw.
Begriff hier ein Wort in einer doc-Datei und doc 1: 2 bedeutet term1 in doc 1 2 mal
public static void main(String[]args) throws FileNotFoundException{
Map<String, Integer> m = new HashMap<>();
String wrd;
for(int i=1;i<=2;i++){
//FileInputStream tdfr = new FileInputStream("D:\\logs\\steem"+i+".txt");
Scanner tdsc=new Scanner(new File("D:\\logs\\steem"+i+".txt"));
while(tdsc.hasNext()){
// m.clear();
Integer docid=i;
wrd=tdsc.next();
//Vector<Integer> vPosList = p.hPosList.get(wrd);
Integer freq=m.get(wrd);
//Integer doc=m1.get(i);
//System.out.println(m.get(wrd));
m.put(wrd, (freq == null) ? 1 : freq + 1);
}
System.out.println(m.size() + " distinct words" + " steem" +i);
System.out.println("Doc" +i+""+m);
//System.out.println("Doc"+i+""+m1);
m.clear();
tdsc.close();
}
//System.out.println(m.size() + " distinct words");
//System.out.println(m);
// System.out.println(m1);
}
}
http erscheint: // st ackoverflow.com/questions/12511543/how-to-build-a-simple-inverted-index –