2016-10-04 12 views
0

Javaで逆インデックスを作成したいと思います。私は1400のテキストファイルのデータを持っています。私は各単語/単語の頻度を数えることができました。私は、コレクション全体に単語が現れる回数を返すことができましたが、t = term、d = doc、f = frequencyの3倍(t、d、f)を作成できませんでした。この今のところ私が持っているコードです:マップを使用してトリプルを作成する方法

私はここに、以下の形式で出力が

term1: doc1:2, 
term2: doc2:3, 
term1: doc3:1 

用語たいことはDOCファイルやドキュメント内の単語である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); 
 
     
 
} 
 
}

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); 

} 
} 
+0

インデックスには何がありますか? – Spotted

答えて

0

私は何を格納についてtをList<Map<String,Integer>>としますか? 各ドキュメントの新しいマップを作成し、そのドキュメントの頻度をマッピングします。

List<Map<String, Integer>> list = new ArrayList<>(); 
    Map<String, Integer> map; 
    String word; 
    //Iterate over documents 
    for (int i = 1; i <= 2; i++) { 
     map = new HashedMap<>(); 
     Scanner tdsc = new Scanner(new File("D:\\logs\\steem" + i + ".txt")); 
     //Iterate over words 
     while (tdsc.hasNext()) { 
      word = tdsc.next(); 
      final Integer freq = map.get(word); 
      if (freq == null) { 
       map.put(word, 1); 
      } else { 
       map.put(word, map.get(word) + 1); 
      } 
     } 
     list.add(map); 
    } 

    //Print result 
    int documentNumber = 0; 
    for (Map<String, Integer> document : list) { 
     for (Map.Entry<String, Integer> entry : document.entrySet()) { 
      System.out.println(entry.getKey() + ":doc"+documentNumber+":" + entry.getValue()); 
     } 
     documentNumber++; 
    } 
+0

これをデータベースに保存したいのですがどうすればいいですか? 私はnetbeansがderbyというデータベースを持っているのを見ました どうすればこの出力をそのデータベースに保存できますか? –

関連する問題