it = cv.orderedIterator();
int count = 0;
ArrayList<Integer> pages = new ArrayList<Integer>();
TIntFloatHashMap valueMap2 = new TIntFloatHashMap(1000);
TIntFloatHashMap valueMap3 = new TIntFloatHashMap();
ArrayList<Integer> npages = new ArrayList<Integer>();
HashMap<Integer, Float> secondMap = new HashMap<Integer, Float>(1000);
this.clean();
// collect article objects
while(it.next()){
pages.add(it.getId());
valueMap2.put(it.getId(),(float) it.getValue());
count++;
}
// prepare inlink counts
setInlinkCounts(pages);
for(int pid : pages){
Collection<Integer> raw_links = getLinks(pid);
if(raw_links.isEmpty()){
continue;
}
ArrayList<Integer> links = new ArrayList<Integer>(raw_links.size());
final double inlink_factor_p = Math.log(inlinkMap.get(pid));
float origValue = valueMap2.get(pid);
setInlinkCounts(raw_links);
for(int lid : raw_links){
final double inlink_factor_link = Math.log(inlinkMap.get(lid));
// check concept generality..
if(inlink_factor_link - inlink_factor_p > 1){
links.add(lid);
}
}
for(int lid : links){
if(!valueMap2.containsKey(lid)){
valueMap2.put(lid, 0.0f);
npages.add(lid);
}
}
float linkedValue = 0.0f;
for(int lid : links){
if(valueMap3.containsKey(lid)){
linkedValue = valueMap3.get(lid);
linkedValue += origValue;
valueMap3.put(lid, linkedValue);
}
else {
valueMap3.put(lid, origValue);
}
}
}
// for(int pid : pages){
// if(valueMap3.containsKey(pid)){
// secondMap.put(pid, (float) (valueMap2.get(pid) + ALPHA * valueMap3.get(pid)));
// }
// else {
// secondMap.put(pid, (float) (valueMap2.get(pid) ));
// }
// }
for(int pid : npages){
secondMap.put(pid, (float) (ALPHA * valueMap3.get(pid)));
}
//System.out.println("read links..");