Author: orbiter
Date: 2008-02-02 01:16:00 +0100 (Sat, 02 Feb 2008)
New Revision: 4427
Modified:
trunk/htroot/yacysearch.html
trunk/source/de/anomic/plasma/plasmaSearchEvent.java
trunk/source/de/anomic/plasma/plasmaSnippetCache.java
Log:
fixed search result preparation
Modified: trunk/htroot/yacysearch.html
===================================================================
--- trunk/htroot/yacysearch.html 2008-02-01 19:22:32 UTC (rev 4426)
+++ trunk/htroot/yacysearch.html 2008-02-02 00:16:00 UTC (rev 4427)
@@ -117,7 +117,7 @@
#{/results}#
#(resultTable)#::</table>#(/resultTable)#
<!-- linklist end -->
-
+<!--<div class="sidebar"><h3 class="head">Drill-Down</h3></div>-->
<!-- attach the bottomline -->
<!--#include virtual="yacysearchitem.html?bottomline=true&eventID=#[eventID]#"
-->
</body>
Modified: trunk/source/de/anomic/plasma/plasmaSearchEvent.java
===================================================================
--- trunk/source/de/anomic/plasma/plasmaSearchEvent.java 2008-02-01
19:22:32 UTC (rev 4426)
+++ trunk/source/de/anomic/plasma/plasmaSearchEvent.java 2008-02-02
00:16:00 UTC (rev 4427)
@@ -58,7 +58,7 @@
public static final String URLFETCH = "urlfetch";
public static final String NORMALIZING = "normalizing";
- public static int workerThreadCount = 8;
+ public static int workerThreadCount = 10;
public static String lastEventID = "";
private static HashMap<String, plasmaSearchEvent> lastEvents = new
HashMap<String, plasmaSearchEvent>(); // a cache for objects from this class:
re-use old search requests
public static final long eventLifetime = 600000; // the time an event will
stay in the cache, 10 Minutes
@@ -391,6 +391,17 @@
}
return false;
}
+
+ private int countFinishedWorkerThreads() {
+ if (this.workerThreads == null) return workerThreadCount;
+ int c = 0;
+ for (int i = 0; i < workerThreadCount; i++) {
+ if ((this.workerThreads[i] == null) ||
+ !(this.workerThreads[i].isAlive()) ||
+ (this.workerThreads[i].busytime() >= 3000)) c++;
+ }
+ return c;
+ }
private boolean anyRemoteSearchAlive() {
// check primary search threads
@@ -576,6 +587,7 @@
public ResultEntry oneResult(int item) {
// first sleep a while to give accumulation threads a chance to work
while (((localSearchThread != null) && (localSearchThread.isAlive()))
||
+ ((countFinishedWorkerThreads() <= item) && (item <
workerThreadCount)) ||
((this.primarySearchThreads != null) &&
(this.primarySearchThreads.length > item) && (anyWorkerAlive()) &&
((this.resultList.size() <= item) ||
(countFinishedRemoteSearch() <= item)))) {
try {Thread.sleep(100);} catch (InterruptedException e) {}
Modified: trunk/source/de/anomic/plasma/plasmaSnippetCache.java
===================================================================
--- trunk/source/de/anomic/plasma/plasmaSnippetCache.java 2008-02-01
19:22:32 UTC (rev 4426)
+++ trunk/source/de/anomic/plasma/plasmaSnippetCache.java 2008-02-02
00:16:00 UTC (rev 4427)
@@ -76,6 +76,7 @@
public static final int SOURCE_CACHE = 0;
public static final int SOURCE_FILE = 1;
public static final int SOURCE_WEB = 2;
+ public static final int SOURCE_METADATA = 3;
public static final int ERROR_NO_HASH_GIVEN = 11;
public static final int ERROR_SOURCE_LOADING = 12;
@@ -280,11 +281,16 @@
if ((resContentLength > maxDocLen) && (!fetchOnline)) {
// content may be too large to be parsed here. To be fast,
we omit calculation of snippet here
return new TextSnippet(url, null, ERROR_SOURCE_LOADING,
queryhashes, "resource available, but too large: " + resContentLength + "
bytes");
- }/*
- } else if (url.) {
+ }
+ } else if (containsAllHashes(comp.dc_title(), queryhashes)) {
// try to create the snippet from information given in the url
itself
- */
-
+ return new TextSnippet(url, (comp.dc_subject().length() > 0) ?
comp.dc_creator() : comp.dc_subject(), SOURCE_METADATA, null, null,
faviconCache.get(url.hash()));
+ } else if (containsAllHashes(comp.dc_creator(), queryhashes)) {
+ // try to create the snippet from information given in the
creator metadata
+ return new TextSnippet(url, comp.dc_creator(),
SOURCE_METADATA, null, null, faviconCache.get(url.hash()));
+ } else if (containsAllHashes(comp.dc_subject(), queryhashes)) {
+ // try to create the snippet from information given in the
subject metadata
+ return new TextSnippet(url, (comp.dc_creator().length() > 0) ?
comp.dc_creator() : comp.dc_subject(), SOURCE_METADATA, null, null,
faviconCache.get(url.hash()));
} else if (fetchOnline) {
// if not found try to download it
@@ -741,7 +747,16 @@
}
return map;
}
-
+
+ private static boolean containsAllHashes(String sentence, Set<String>
queryhashes) {
+ HashMap<String, Integer> m = hashSentence(sentence);
+ Iterator<String> i = queryhashes.iterator();
+ while (i.hasNext()) {
+ if (!(m.containsKey(i.next()))) return false;
+ }
+ return true;
+ }
+
public static plasmaParserDocument parseDocument(yacyURL url, long
contentLength, InputStream resourceStream) throws ParserException {
return parseDocument(url, contentLength, resourceStream, null);
}
_______________________________________________
YaCy-svn mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/yacy-svn