fix for wrong display of search statistics

see http://www.yacy-forum.de/viewtopic.php?p=31242#31242

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@3352 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
orbiter 18 years ago
parent ac376662cc
commit 30d79d69a6

@ -24,6 +24,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
@ -52,19 +53,16 @@ public class SearchStatistics_p {
prop.put("page", page);
int maxCount = 100;
int entCount = 0;
boolean dark = true;
Map.Entry entry;
if ((page == 1) || (page == 3)) {
Iterator i = (page == 1) ? switchboard.localSearches.entrySet().iterator() : switchboard.remoteSearches.entrySet().iterator();
ArrayList array = (page == 1) ? switchboard.localSearches : switchboard.remoteSearches;
Long trackerHandle;
HashMap searchProfile;
StringBuffer a = null;
int m = Math.min(maxCount, (page == 1) ? switchboard.localSearches.size(): switchboard.remoteSearches.size()) - 1;
while ((entCount < maxCount) && (i.hasNext())) {
entry = (Map.Entry) i.next();
trackerHandle = (Long) entry.getKey();
searchProfile = (HashMap) entry.getValue();
int m = Math.min(maxCount, array.size());
for (int entCount = 0; entCount < m; entCount++) {
searchProfile = (HashMap) array.get(array.size() - entCount - 1);
trackerHandle = (Long) searchProfile.get("time");
if (page == 1) {
Iterator wi = ((Set) searchProfile.get("querywords")).iterator();
@ -73,34 +71,33 @@ public class SearchStatistics_p {
}
// put values in template
prop.put("page_list_" + (m - entCount) + "_dark", ((dark) ? 1 : 0) ); dark =! dark;
prop.put("page_list_" + (m - entCount) + "_host", (String) searchProfile.get("host"));
prop.put("page_list_" + (m - entCount) + "_date", yacyCore.universalDateShortString(new Date(trackerHandle.longValue())));
prop.put("page_list_" + entCount + "_dark", ((dark) ? 1 : 0) ); dark =! dark;
prop.put("page_list_" + entCount + "_host", (String) searchProfile.get("host"));
prop.put("page_list_" + entCount + "_date", yacyCore.universalDateShortString(new Date(trackerHandle.longValue())));
if (page == 1) {
// local search
prop.put("page_list_" + (m - entCount) + "_offset", ((Integer) searchProfile.get("offset")).toString());
prop.put("page_list_" + (m - entCount) + "_querywords", new String(a));
prop.put("page_list_" + entCount + "_offset", ((Integer) searchProfile.get("offset")).toString());
prop.put("page_list_" + entCount + "_querywords", new String(a));
} else {
// remote search
prop.put("page_list_" + (m - entCount) + "_peername", (String) searchProfile.get("peername"));
prop.put("page_list_" + (m - entCount) + "_queryhashes", plasmaSearchQuery.anonymizedQueryHashes((Set) searchProfile.get("queryhashes")));
prop.put("page_list_" + entCount + "_peername", (String) searchProfile.get("peername"));
prop.put("page_list_" + entCount + "_queryhashes", plasmaSearchQuery.anonymizedQueryHashes((Set) searchProfile.get("queryhashes")));
}
prop.put("page_list_" + (m - entCount) + "_querycount", ((Integer) searchProfile.get("querycount")).toString());
prop.put("page_list_" + (m - entCount) + "_querytime", ((Long) searchProfile.get("querytime")).toString());
prop.put("page_list_" + (m - entCount) + "_resultcount", ((Integer) searchProfile.get("resultcount")).toString());
prop.put("page_list_" + (m - entCount) + "_resulttime", ((Long) searchProfile.get("resulttime")).toString());
// next
entCount++;
prop.put("page_list_" + entCount + "_querycount", ((Integer) searchProfile.get("querycount")).toString());
prop.put("page_list_" + entCount + "_querytime", ((Long) searchProfile.get("querytime")).toString());
prop.put("page_list_" + entCount + "_resultcount", ((Integer) searchProfile.get("resultcount")).toString());
prop.put("page_list_" + entCount + "_resulttime", ((Long) searchProfile.get("resulttime")).toString());
}
prop.put("page_list", entCount);
prop.put("page_num", entCount);
prop.put("page_list", m);
prop.put("page_num", m);
prop.put("page_total", (page == 1) ? switchboard.localSearches.size() : switchboard.remoteSearches.size());
}
if ((page == 2) || (page == 4)) {
Iterator i = (page == 2) ? switchboard.localSearchTracker.entrySet().iterator() : switchboard.remoteSearchTracker.entrySet().iterator();
String host, handlestring;
TreeSet handles;
int entCount = 0;
Map.Entry entry;
while ((entCount < maxCount) && (i.hasNext())) {
entry = (Map.Entry) i.next();
host = (String) entry.getKey();

@ -252,7 +252,8 @@ public final class search {
searchProfile.put("host", client);
yacySeed remotepeer = yacyCore.seedDB.lookupByIP(natLib.getInetAddress(client), true, false, false);
searchProfile.put("peername", (remotepeer == null) ? "unknown" : remotepeer.getName());
sb.remoteSearches.put(trackerHandle, searchProfile);
searchProfile.put("time", trackerHandle);
sb.remoteSearches.add(searchProfile);
TreeSet handles = (TreeSet) sb.remoteSearchTracker.get(client);
if (handles == null) handles = new TreeSet();
handles.add(trackerHandle);

@ -118,7 +118,6 @@ import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import de.anomic.data.blogBoard;
@ -239,7 +238,7 @@ public final class plasmaSwitchboard extends serverAbstractSwitch implements ser
public dbImportManager dbImportManager;
public plasmaDHTFlush transferIdxThread = null;
private plasmaDHTChunk dhtTransferChunk = null;
public TreeMap localSearches, remoteSearches;
public ArrayList localSearches, remoteSearches;
public HashMap localSearchTracker, remoteSearchTracker;
public long startupTime = 0;
public long lastseedcheckuptime = -1;
@ -1126,8 +1125,8 @@ public final class plasmaSwitchboard extends serverAbstractSwitch implements ser
// init search history trackers
this.localSearchTracker = new HashMap(); // String:TreeSet - IP:set of Long(accessTime)
this.remoteSearchTracker = new HashMap();
this.localSearches = new TreeMap(); // Long:HashMap - Long(accessTime):properties
this.remoteSearches = new TreeMap();
this.localSearches = new ArrayList(); // contains search result properties as HashMaps
this.remoteSearches = new ArrayList();
// init messages: clean up message symbol
File notifierSource = new File(getRootPath(), getConfig(HTROOT_PATH, HTROOT_PATH_DEFAULT) + "/env/grafics/empty.gif");
@ -2807,10 +2806,11 @@ public final class plasmaSwitchboard extends serverAbstractSwitch implements ser
// prepare search statistics
Long trackerHandle = new Long(System.currentTimeMillis());
HashMap searchProfile = theSearch.resultProfile();
searchProfile.put("time", trackerHandle);
searchProfile.put("host", client);
searchProfile.put("offset", new Integer(0));
searchProfile.put("results", results);
this.localSearches.put(trackerHandle, searchProfile);
this.localSearches.add(searchProfile);
TreeSet handles = (TreeSet) this.localSearchTracker.get(client);
if (handles == null) handles = new TreeSet();
handles.add(trackerHandle);

Loading…
Cancel
Save