From d8284046b04d47f5b6905162806c50eb6dd17f63 Mon Sep 17 00:00:00 2001 From: orbiter Date: Tue, 26 May 2009 22:30:20 +0000 Subject: [PATCH] enhanced speed of site navigation computation git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@5980 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- .../plasma/plasmaSearchRankingProcess.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/source/de/anomic/plasma/plasmaSearchRankingProcess.java b/source/de/anomic/plasma/plasmaSearchRankingProcess.java index 0eb630cef..1bbf7fa3b 100644 --- a/source/de/anomic/plasma/plasmaSearchRankingProcess.java +++ b/source/de/anomic/plasma/plasmaSearchRankingProcess.java @@ -29,6 +29,8 @@ package de.anomic.plasma; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -246,6 +248,14 @@ public final class plasmaSearchRankingProcess { } } + public static final Comparator hscomp = new Comparator() { + public int compare(hoststat o1, hoststat o2) { + if (o1.count < o2.count) return 1; + if (o2.count < o1.count) return -1; + return 0; + } + }; + public class hostnaventry { public int count; public String host; @@ -256,25 +266,18 @@ public final class plasmaSearchRankingProcess { } public ArrayList getHostNavigator(int maxentries) { - ScoreCluster score = new ScoreCluster(); - for (Map.Entry hsentry: this.hostNavigator.entrySet()) { - score.addScore(hsentry.getKey(), hsentry.getValue().count); - } - int rc = Math.min(maxentries, score.size()); + hoststat[] hsa = this.hostNavigator.values().toArray(new hoststat[this.hostNavigator.size()]); + Arrays.sort(hsa, hscomp); + int rc = Math.min(maxentries, hsa.length); ArrayList result = new ArrayList(); - String hosthash; - hoststat hs; URLMetadataRow mr; yacyURL url; for (int i = 0; i < rc; i++) { - hosthash = score.getMaxObject(); - hs = this.hostNavigator.get(hosthash); - mr = wordIndex.metadata().load(hs.hashsample, null, 0); + mr = wordIndex.metadata().load(hsa[i].hashsample, null, 0); if (mr == null) continue; url = mr.metadata().url(); if (url == null) continue; - result.add(new hostnaventry(url.getHost(), score.getScore(hosthash))); - score.deleteScore(hosthash); + result.add(new hostnaventry(url.getHost(), hsa[i].count)); } return result; }