Je veux construire un index inversé en Java. J'ai des données de cran de 1400 fichiers texte. J'étais capable de compter la fréquence de chaque terme/mot. J'ai été capable de retourner le nombre de fois qu'un mot apparaît dans toute la collection, mais je n'ai pas pu retourner les documents dans lesquels le mot apparaît. C'est le code que j'ai jusqu'à présent:comment créer un index inversé en Java
Je veux la sortie dans la forme terme1 suivante: doc1: 2, Doc2: 3 terme2: doc1: 3, Doc4: 1 ............... ainsi de suite
ici terme est un mot dans un fichier doc et doc 1: 2 signifie terme1 figure dans le document 1 2 fois
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: // st ackoverflow.com/questions/12511543/how-to-build-a-simple-inverted-index –