Mehrere Instanzen / Verteilte Index / Solr

Hab da gleich mal eine Frage:
Ich bin dabei, einen grösseren Yacy Index aufzubauen. 5-10 Maschinen im gleichen Netz hinter einer externen IP. Alle Teil des P2P freeworld. Starturls sind möglichst viele .de .ch. .at Homepages. Jede der beteiligten Maschinen ist eine standard Yacy Instanz (ab GitHub) mit einem Solr. Die beteiligten Maschinen haben die jeweils anderen als “Federated” Solrs eingetragen und scheinen ausgiebig miteinander zu kommunizieren.

Frage: Wenn ich nun eine Suche durchführe scheint nur der jeweilige einzelne Index genutzt zu werden. Was mache ich falsch? Habe ich die richtige Strategie?

Besten Dank für einen Tipp

Herzlichst
Markus

Hi Markus,

super das Du hergefunden hast!
Wollt die ganzen Tage Dir schon schreiben das wir nun wieder ein Forum haben :slight_smile:

Deine Strategie ist schon richtig. Allerdings sind die Anfragen/Antworten an die anderen Host in der Regel Langsamer als die des lokalen Indexes, weswegen sie schnell mal nicht in ersten Query mit in der Ergebnissmenge sind. Spätestens beim 2. Query (z.B. für die 2. Seite der Ergenisse) sollten die Treffer der anderen Indexe enthalten sein.

Wie machst Du aus, das keine Ergebnisse der anderen Indexe angezeigt werden?

Cu, sixcooler.

Gerade fällt mir noch ein: hast Du externe Solr laufen? oder nutzt Du den Embedded Solr?

Hi Sebastian

Alle meine Yacy Instanzen sind out-of-the box Installationen mit embedded solr. Manche auf Win 2008 Server, bald aber alle nur noch auf freebsd. Mühsam war die Updaterei bis ich rausfand, dass ich immer erst die 9000 stable Version installieren muss und dann erst die Github druberklatschen kann.

Anfangs plante ich, je Land (.de, .ch etc) einen eigenen Index im Robinson Modus aufzubauen, um die Indices “sauber” zu halten (> 500 Einträge auf der Blacklist). Aber da war dann das Problem: Was machen, wenn keine Ergebnisse gefunden werden… Habe dann bemerkt, dass Ergebnisse aus dem lokalen Index jeweils bevorzugt werden, d.h. die Geschwindigkeit spielt eine Rolle. Habe dann alle Instanzen auf P2P umgestellt, v.a. auch wg. Redundanz und Skalierbarkeit. Nicht zuletzt, um das Netzwerk zu unterstützen. Welcher Index jeweils antwortet sehe ich an bestimmten “Testsuchbegriffen”, da ich meinen Content inzwischen sehr gut kenne. Ich sammle seit Jahren Starturls und Portale :wink:
wenn ich z.B.: nach “Impressum” suche, sehe ich an der Anzahl Treffer, welcher Index antwortet. Das ändert zwar geringfügig nach mehreren Suchen, aber nicht von 100 auf 700000, wie zu erwarten wäre.
Komisch ist auch die Anzahl Dokument je Index, welche heftige Sprünge / Unstetigkeiten auf und ab hat.

Ich frage mich, was mit dem Content passiert. Der Index wird ja im Netz verteilt, aber was passiert mit den Starturls, wenn eine Maschine ausfällt?

Starturls sind eine Wissenschaft für sich. Ich habe mir ein paar 100 Mio. Domainnamen besorgt. Um herauszufinden, welche überhaupt “live” sind ist ausgiebiges Preprocessing erforderlich, wenn man nicht bei PPM < 10 jahrelang zuschauen will :slight_smile:

Ich dachte, ich kann dann per solr Export explizit content von einem auf den anderen Index übertragen, aber das geht wohl nicht so einfach. Am Ende ist es schneller, nur die Domains / Urls zu exportieren und auf der Zielmaschine neu zu crawlen. Schön wäre, wenn ich den “Verteilvorgang” (Redundanz) innerhalb meiner Indices explizit anstossen könnte.

Zum Frontend: Die Susper App ist sehr hübsch (von ein paar hart codierten URLs’ mal abgesehen ;-)) aber löst nicht das Problem mit der Beschränkung auf nur einen Index.

Wesentlich bessere Ergebnisse habe ich inzwischen mit einer searx Installation, in die ich meine Yacy Maschinen neben den G und Bings dieser Welt nutze.

Was mir noch fehlt / woran ich arbeite ist eine vernünftige Starturl Verwaltung, aus der ich explizit einzelne Selektionen fahren kann.

Mit so einem Setup habe ich schon “schnell übers Wochenende” den EU Jobmarkt oder B2B Companies samt Produkten gecrawlt.

Bischen mühsam ist es, die gecrawlten Daten aus dem solr rauszuholen, so z.B. eine Anfrage nach “Zeig mir die neu gecrawlten je Suchbegriff oder crawl Durchgang”.

Im Moment sehe ich nur ein flat Export gemäss “älter als x Sekunden” und Aufbereiten Extern / sequenziell.

BG
Markus

Fast vergessen: bei den Federated Einstellungen gebe ich den Port an, auf dem der Search antwortet, also 8090, 8091 etc. Als default steht da aber immer 8983 oder so (eben nicht 8090). Ich könnte mir vorstellen, dass der solr auf einem anderen Port antwortet, aber bei mir antwortet z.B. auf http://192.168.1.11:8983/solr nicht das solr admin gui, sondern nur “Fehler: Verbindung fehlgeschlagen”.

BG
M

Das ist ja eine interessante Konstruktion! Bei mehreren externen solr kann man deren Anbindung ja konfigurieren, z. B. als shard. Ist das so? Dann hätten nicht alle Solr alles, aber auffindbar sollte für jeden peer alles sein.

Markus Schubert 19:04 (vor 0 Minuten)

an Orbiter

Naja, so hatte ich das verstanden. Mein Eintrag bei den Solr URLs ist :

http://127.0.0.1:8090/solr
http://192.168.1.11:8091/solr
http://192.168.1.12:8090/solr
http://192.168.1.18:8093/solr
http://192.168.1.19:8094/solr

Der eigene wird jeweils durch 127.0.0.1/solr ersetzt.

Als sharding habe ich MODULO_HOST_MD5 eingestellt. Ich würde auch erwarten, dass über jeden alles erreichbar ist (da ja jeder ein paar Treffer von “remote Hosts” ausweist).

Irgendwie aber scheinen sie hartnäckig jeweils nur ihren eigenen Index zu verwenden.

Wäre natürlich perfekt, wenn mein kleines Grid nach aussen wie ein grosser Index sichtbar wäre. Noch schöner natürlich, wenn ich analog eines RAID 5+1 (oder so) sharding plus Redundanz hinbekäme.

Im Moment schalte ich eine Maschine nach der anderen hinzu und lasse sie mit einer Auswahl starturls, die ich gerade für erforderlich halte “vollaufen” bis der Disc space bei 80% ist. Dann “ernte” ich per domain export die “frischen” Donmains / URL und mische diese mit meiner Basis für die nächste neue Maschine. Die älteren werden nach und nach durch die externen Suchen “zugesaut” und wenn ich per Blacklist nicht mehr Herr werde, dann werde ich den Index weg und die alte Maschine wird zu einer neuen.

Sowohl die Datenbasis der Starturls als auch die der Blacklist wird dabei iterativ immer besser. Blöd ist nur der manuelle Aufwand, aber die Gesamtmaschine ist schon sehr cool.

Wenn jemand Tipps für ein effizienteres Setup hat bin ich offen für alles. Weiterhin brüte ich über einem Business case, wie man einen Anreiz für eine kommerzielle Verbreitung und Vervielfachung der Peers erreichen kann.

BG

woran merkst du das, an den Suchergebnissen?

In einer ähnlichen Vorgehensweise habe ich mal versucht mit einer maximalen Crawltiefe von 1 pro Domäne (aber ohne Domänenbeschränkung) möglichst viele Domänen zu sammeln.

Um eine etwas kontrollierbare aber maximal skalierbare Maschine zu haben ist YaCy Grid entsprechend gebaut. Ich würde das ebenfalls gerne als Community-Element ausrollen, aber dafür müsste gemeinschaftlich Know-How aufgebaut werden, wozu vorher erst mal wieder Forum und Wiki geflickt werden müsste…

Ja, die Sucheregebnisse sind komplett unterschiedlich, je nachdem welche Instanz ich nutze.
Im Moment mache ich auf der Basis von searx weiter, da damit auch der Kram von anderen Maschinen reingemischt wird, wenn yacy nichts liefert.

Wenn ich auf der yacy Suche blättere, dann werden offensichtlich die Ergebnisse der anderen Maschinen mit reingerechnet (die Ergebnis Zahlen springen dann in die Höhe).

Was gut klappt, ist, dass falls meine yacy Instanzen Treffer haben, dann kommen die bevorzugt auf Seite 1. Man sieht auch schön, dass oft mehrere yacy antworten. Ich sollte mal einen Versuch machen, und ein paar andere yacy instanzen als Quellen der Metasuche explizit konfigurieren.

Mit Yacy sieht man zwei Dinge sehr schön: 1. Das Internet ist alles andere als zusammenhängend, d.h. der Gugel Page Rank Algorithmus gehört ins Reich der Märchen und 2. Gugel ist zwar schnell, aber taugt nicht mehr für echte Recherchen.

Mit der heute verfügbaren (billigen) Hardware und einer verteilten Infrastruktur wie Yacy lässt sich eine ernstzunehmende echte Alternative zu G aufbauen. Mann muss nur den Spam der grossen Portale und SEO Helden raushalten und gute starturls haben.

Einziges Manko von Yacy ist die Geschwindigkeit, weil die Welt derart von G versaut und auf Konsum konditioniert ist.

An einer Community bin ich absolut interssiert. In den Zeiten von meetup ist es einfach auch mal zusammenzukommen. Ich bin hier in Zürich und könnte bei Interesse durchaus mal ein Traffen organisieren.