verify=false zweite Ergebnissseite geht nicht

Hier finden YaCy User Hilfe wenn was nicht funktioniert oder anders funktioniert als man dachte. Bei offensichtlichen Fehlern diese bitte gleich in die Bugs (http://bugs.yacy.net) eintragen.
Forumsregeln
In diesem Forum geht es um Benutzungsprobleme und Anfragen für Hilfe. Wird dabei ein Bug identifiziert, wird der thread zur Bearbeitung in die Bug-Sektion verschoben. Wer hier also einen Thread eingestellt hat und ihn vermisst, wird ihn sicherlich in der Bug-Sektion wiederfinden.

verify=false zweite Ergebnissseite geht nicht

Beitragvon celle » Di Mär 24, 2009 5:18 pm

Hallo,

es haben sich schon mehrere beschwert, das bei verify=false nur die erste Ergebnisseite angezeigt wird. Ich habe mal geschaut und glaube ich den Fehler gefunden. Der Fehler scheint in plasmaSearchEvent.java zu liegen. Beim ersten Aufruf der Suche für ein neues Wort wird eine neuer Event erstellt, der bei den weiteren Seiten weiter benutzt wird. Bei verify=false wird das jedoch unterbunden. Ich habe das mal geändert. Kann mal jemand schauen, ob es damit auch bei euch wie gewünscht läuft?

Code: Alles auswählen
Index: source/de/anomic/plasma/plasmaSearchEvent.java
===================================================================
--- source/de/anomic/plasma/plasmaSearchEvent.java      (Revision 5742)
+++ source/de/anomic/plasma/plasmaSearchEvent.java      (Arbeitskopie)
@@ -198,21 +198,22 @@
             }
         }

-        if (query.onlineSnippetFetch) {
+        //if (query.onlineSnippetFetch) {
             // start worker threads to fetch urls and snippets
-            this.workerThreads = new resultWorker[workerThreadCount];
-            for (int i = 0; i < workerThreadCount; i++) {
-                this.workerThreads[i] = new resultWorker(i, 10000, 2);
+            this.workerThreads = new resultWorker[query.onlineSnippetFetch ? workerThreadCount : 1];
+            for (int i = 0; i < workerThreads.length; i++) {
+                this.workerThreads[i] = new resultWorker(i, query.onlineSnippetFetch ? 10000 : 3000, query.onlineSnippetFetch ? 2 : 0
);
                 this.workerThreads[i].start();
             }
             serverProfiling.update("SEARCH", new plasmaProfiling.searchEvent(query.id(true), "online snippet fetch threads started", 0, 0), false);
-        } else {
+        /*} else {
             final long timer = System.currentTimeMillis();
             // use only a single worker thread, thats enough
             resultWorker worker = new resultWorker(0, 3000, 0);
             worker.run();
             serverProfiling.update("SEARCH", new plasmaProfiling.searchEvent(query.id(true), "offline snippet fetch", result.size(), System.currentTimeMillis() - timer), false);
-        }
+        }*/

         // clean up events
         cleanupEvents(false);
@@ -382,7 +383,7 @@

     private boolean anyWorkerAlive() {
         if (this.workerThreads == null) return false;
-        for (int i = 0; i < workerThreadCount; i++) {
+        for (int i = 0; i < workerThreads.length; i++) {
            if ((this.workerThreads[i] != null) &&
                   (this.workerThreads[i].isAlive()) &&
                   (this.workerThreads[i].busytime() < 3000)) return true;
@@ -477,14 +478,14 @@
             if ((!event.anyWorkerAlive()) &&
                 (((query.contentdom == plasmaSearchQuery.CONTENTDOM_IMAGE) && (event.images.size() + 30 < query.neededResults())) ||
                  (event.result.size() < query.neededResults() + 10)) &&
-                 (event.query.onlineSnippetFetch) &&
+                 //(event.query.onlineSnippetFetch) &&
                 (event.getRankingResult().getLocalResourceSize() + event.getRankingResult().getRemoteResourceSize() > event.result.size())) {
                 // set new timeout
                 event.eventTime = System.currentTimeMillis();
                 // start worker threads to fetch urls and snippets
-                event.workerThreads = new resultWorker[workerThreadCount];
+                event.workerThreads = new resultWorker[event.query.onlineSnippetFetch ? workerThreadCount : 1];
                 resultWorker worker;
-                for (int i = 0; i < workerThreadCount; i++) {
+                for (int i = 0; i < event.workerThreads.length; i++) {
                     worker = event.new resultWorker(i, 6000, (query.onlineSnippetFetch) ? 2 : 0);
                     worker.start();
                     event.workerThreads[i] = worker;


tschüss

celle
celle
 
Beiträge: 47
Registriert: Mi Jun 27, 2007 11:52 am

Re: verify=false zweite Ergebnissseite geht nicht

Beitragvon apfelmaennchen » Mi Mär 25, 2009 6:38 am

Ich kann das frühestens am Wochenende testen...danke erst mal, dass Du Dich drum gekümmert hast.

Gruß!
apfelmaennchen
apfelmaennchen
 
Beiträge: 429
Registriert: Mo Aug 20, 2007 7:06 pm

Re: verify=false zweite Ergebnissseite geht nicht

Beitragvon apfelmaennchen » Sa Mär 28, 2009 10:48 am

Mein Eclipse weigert sich den Patch vollständig einzuspielen....kann es sein, dass Du nicht auf der aktuellen SVN aufgesetzt hast?
Ein Versuch alle Änderungen von Hand rein zu pfrickeln war leider nicht erfolgreich...

Gruß!
apfelmaennchen
apfelmaennchen
 
Beiträge: 429
Registriert: Mo Aug 20, 2007 7:06 pm

Re: verify=false zweite Ergebnissseite geht nicht

Beitragvon celle » Sa Mär 28, 2009 11:16 am

Hm,

ist eigentlich ein aktuelles SVN wie ja im Diff zu sehen ist. Ich habe zwar lokal einige Modifikationen, die jedoch eigentlich nur die URL Analysis und den Proxyhandler betreffen.
Ich habe das DIFF über svn diff source/de/anomic/plasma/plasmaSearchEvent.java gemacht. Gibt es da einen anderen Weg?
Hier nochmal das diff zum aktuellen SVN.

Code: Alles auswählen
Index: source/de/anomic/plasma/plasmaSearchEvent.java
===================================================================
--- source/de/anomic/plasma/plasmaSearchEvent.java   (Revision 5746)
+++ source/de/anomic/plasma/plasmaSearchEvent.java   (Arbeitskopie)
@@ -198,21 +198,22 @@
             }
         }
         
-        if (query.onlineSnippetFetch) {
+        //if (query.onlineSnippetFetch) {
             // start worker threads to fetch urls and snippets
-            this.workerThreads = new resultWorker[workerThreadCount];
-            for (int i = 0; i < workerThreadCount; i++) {
-                this.workerThreads[i] = new resultWorker(i, 10000, 2);
+            this.workerThreads = new resultWorker[query.onlineSnippetFetch ? workerThreadCount : 1];
+            for (int i = 0; i < workerThreads.length; i++) {
+                this.workerThreads[i] = new resultWorker(i, query.onlineSnippetFetch ? 10000 : 3000,
+                                                          query.onlineSnippetFetch ? 2 : 0);
                 this.workerThreads[i].start();
             }
             serverProfiling.update("SEARCH", new plasmaProfiling.searchEvent(query.id(true), "online snippet fetch threads started", 0, 0), false);
-        } else {
+        /*} else {
             final long timer = System.currentTimeMillis();
             // use only a single worker thread, thats enough
             resultWorker worker = new resultWorker(0, 3000, 0);
             worker.run();
             serverProfiling.update("SEARCH", new plasmaProfiling.searchEvent(query.id(true), "offline snippet fetch", result.size(), System.currentTimeMillis() - timer), false);
-        }
+        }*/
         
         // clean up events
         cleanupEvents(false);
@@ -382,7 +383,7 @@
     
     private boolean anyWorkerAlive() {
         if (this.workerThreads == null) return false;
-        for (int i = 0; i < workerThreadCount; i++) {
+        for (int i = 0; i < workerThreads.length; i++) {
            if ((this.workerThreads[i] != null) &&
               (this.workerThreads[i].isAlive()) &&
               (this.workerThreads[i].busytime() < 3000)) return true;
@@ -477,14 +478,14 @@
             if ((!event.anyWorkerAlive()) &&
                 (((query.contentdom == plasmaSearchQuery.CONTENTDOM_IMAGE) && (event.images.size() + 30 < query.neededResults())) ||
                  (event.result.size() < query.neededResults() + 10)) &&
-                 (event.query.onlineSnippetFetch) &&
+                 //(event.query.onlineSnippetFetch) &&
                 (event.getRankingResult().getLocalResourceSize() + event.getRankingResult().getRemoteResourceSize() > event.result.size())) {
                 // set new timeout
                 event.eventTime = System.currentTimeMillis();
                 // start worker threads to fetch urls and snippets
-                event.workerThreads = new resultWorker[workerThreadCount];
+                event.workerThreads = new resultWorker[event.query.onlineSnippetFetch ? workerThreadCount : 1];
                 resultWorker worker;
-                for (int i = 0; i < workerThreadCount; i++) {
+                for (int i = 0; i < event.workerThreads.length; i++) {
                     worker = event.new resultWorker(i, 6000, (query.onlineSnippetFetch) ? 2 : 0);
                     worker.start();
                     event.workerThreads[i] = worker;


Wo war genau das Problem, das per Hand reinzumachen?

tschüss

celle
celle
 
Beiträge: 47
Registriert: Mi Jun 27, 2007 11:52 am

Re: verify=false zweite Ergebnissseite geht nicht

Beitragvon apfelmaennchen » Sa Mär 28, 2009 11:47 am

Danke, mit dem neuerlichen Patch und "igmore white spaces" hat Eclipse die Änderungen übernommen.
Hab das ganze nur kurz überflogen und getestet - nach meiner Ansicht funktioniert das so problemlos.
Lediglich der Log-Eintrag serverProfiling.update("SEARCH",... sollte ebenfalls noch zwischen query.onlineSnippetFetch=true/false unterscheiden (ist sonst irreführend). Wichtig ist ja in Hauptsache, das der Performance-Gewinn durch das Nicht-Laden der Snippets erhalten bleibt ;-)

Gruß!
apfelmaennchen
apfelmaennchen
 
Beiträge: 429
Registriert: Mo Aug 20, 2007 7:06 pm

Re: verify=false zweite Ergebnissseite geht nicht

Beitragvon celle » Sa Mär 28, 2009 11:53 am

Hallo,

jepp das Logging sollte noch angepasst werden. Das ganze war ja auch erstmal ein Test ob es funktioniert. Teile habe ich ja auch nur auskommentiert, die könnte man dann auch noch entfernen. Ich habe keinen Zugriff aufs SVN. Kannst du das machen, wenn du den Code dafür reif findest?

tschüss

celle
celle
 
Beiträge: 47
Registriert: Mi Jun 27, 2007 11:52 am

Re: verify=false zweite Ergebnissseite geht nicht

Beitragvon Orbiter » Do Apr 23, 2009 4:31 pm

habs mal probiert in SVN 5859 zu fixen. Hab Celles diff nicht ganz so verwendet, aber ähnlich. Der Punkt ist, dass bei einer Suche ohne Abfrage des Webs für die Snippets es nicht notwendig ist, mehrere Threads zu starten, sondern nur einer. Bitte guckt mal ob es geht.
Orbiter
 
Beiträge: 5792
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main


Zurück zu Fragen und Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast