Я хочу построить инвертированный индекс в java. У меня есть крановые данные из 1400 текстовых файлов. Я смог подсчитать частоту каждого слова/слова. Мне удалось вернуть число раз, когда слово появляется во всей коллекции, но я не смог вернуть документы, в которые оно появилось. Это код, который у меня есть до сих пор:Как создать инвертированный индекс в java
Я хочу, чтобы результат в следующий вид term1: doc1: 2, doc2: 3 term2: doc1: 3, doc4: 1 ............... так далее
здесь термин это слово в файле док и док 1: 2 означает term1 появляется документ 1 2 раза
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: // ул ackoverflow.com/questions/12511543/how-to-build-a-simple-inverted-index –