site:.edu möglich?

Ideen und Vorschläge sind willkommen.

site:.edu möglich?

Beitragvon liebel-lab » Mo Okt 06, 2008 1:31 pm

ist es möglich suchergebnisse gezielt mit einer domainangabe einzuengen?
"supercrawler site:.edu" ...sorry bin mir nicht sicher ob das schonmal beantwortet wurde. konnte es auf die schnelle nicht finden...
merci
liebel-lab
 
Beiträge: 175
Registriert: Sa Jan 26, 2008 7:00 pm

Re: site:.edu möglich?

Beitragvon Low012 » Mo Okt 06, 2008 2:22 pm

Auf der Seite mit den erweiterten Suchoptionen (http://localhost:8080/index.html?searchoptions=1) kann man einen Filter ("URL Mask") angeben, der nur solche Ergebnisse durchlässt, deren URLs dem dort angegebene regulären Audruck entsprechen. Für deine Fall sollte .*\.edu/.* funktionieren.

Ob es auch einen site-Operator gibt, weiß ich nicht.
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: site:.edu möglich?

Beitragvon liebel-lab » Mo Okt 06, 2008 8:56 pm

merci das hilft schon mal weiter....wenn hier gaeste bei uns yacy mal testen wollen ...tippen viele natuerlich
"suchbegriff1 suchbegriff2" ein ...das kenne sie von google....neuderdings aber eben auch...."suchbegriff1 site:.edu" ...
wir wuerden den "site filter gerne verwenden um clevere autostart-crawler zu erstellen...sozusagen...suche in yacy selbst nach "bla bla site:edu..und starte von dort an mit dem eingestellten filter ...
liebel-lab
 
Beiträge: 175
Registriert: Sa Jan 26, 2008 7:00 pm

Re: site:.edu möglich?

Beitragvon Lotus » Mo Okt 06, 2008 9:00 pm

liebel-lab hat geschrieben:clevere autostart-crawler zu erstellen

Das ist eine super Idee! Solche Filter werden sicher eher auf "Qualitätsseiten" beschränkt die es wert sind zu crawlen.
Lotus
 
Beiträge: 1699
Registriert: Mi Jun 27, 2007 3:33 pm
Wohnort: Hamburg

Re: site:.edu möglich?

Beitragvon Orbiter » Mi Okt 08, 2008 3:48 pm

Low012 hat geschrieben:Ob es auch einen site-Operator gibt, weiß ich nicht.

gibts noch nicht, es müsste aber möglich sein einen zu bauen der deutlich performanter arbeitet als ein Filter mit regular expressions, weil man mit Hilfe der TLD vorselektieren kann. Müsste ich tiefer einsteigen, kommt in die to-do Liste im kleinen schwarzen Buch...
-> Wunschliste
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: site:.edu möglich?

Beitragvon Halborinda » Sa Jan 03, 2009 2:54 pm

Hat das Thema vielleicht Verwandschaft mit: erweiterte Blacklistengine?

Grüße
Halborinda
 
Beiträge: 217
Registriert: Sa Jul 07, 2007 7:58 am

Re: site:.edu möglich?

Beitragvon Orbiter » Sa Jan 03, 2009 6:00 pm

also den site-Operator müsste sich quick-and-dirty genau so machen lassen, wie der filetype-Operator, den ich beim 25C3 nach einer Anregung durch Marc eingebaut habe, in SVN 5418:
Code: Alles auswählen
Modified: trunk/htroot/yacysearch.java
===================================================================
--- trunk/htroot/yacysearch.java   2008-12-29 17:36:53 UTC (rev 5417)
+++ trunk/htroot/yacysearch.java   2008-12-29 17:57:04 UTC (rev 5418)
@@ -206,6 +206,14 @@
                   lr = querystring.substring(lrp + 9, lrp + 11).toLowerCase();
                query[0].remove("language:" + lr);
            }
+            int filetype = querystring.indexOf("filetype:");
+            if (filetype >= 0) {
+                int ftb = querystring.indexOf(' ', filetype);
+                if (ftb == -1) ftb = querystring.length();
+                String ft = querystring.substring(filetype + 9, ftb);
+                query[0].remove("filetype:" + ft.toLowerCase());
+                urlmask = ".*." + ft;
+            }


Auf die Art müssten sich sehr viele Suchoptionen, die auf Filter basieren schnell implementieren lassen. Wer probierts?
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: site:.edu möglich?

Beitragvon Low012 » So Jan 04, 2009 4:06 pm

Habs mal eingebaut, allerdings gibt es noch ein paar Probleme:

Der reguläre Ausdruck könnte verbessert werden. .*\.edu/.* zeigt zwar Ergebnisse aus der edu-Domain, aber auch http://www.ibiblio.org/pub/historic-linux/ftp-archives/sunsite.unc.edu/Nov-06-1994/games/x11/action/doom/INDEX.short.html. Der Ausdruck müsste also noch verbessert werden.

Werden site und filetype zusammen benutzt, wird filetype nicht beachtet, weil die Variable urlmask überschrieben wird. Am besten wäre es, die urlmask nicht als String zu übergeben, sondern eine Liste aus Strings zu erzeugen, an die weitere urlmasks angehängt werden können und die dann später abgearbeitet werden, um alle Filter anzuwenden.

Mir ist eben noch aufgefallen, dass nur "edu" oder "pdf" funktionieren, ".edu" oder ".pdf" nicht. Es wäre schön, wenn man beides benutzen könnte.

Das sind alles keine großen Sachen, aber ich muss jetzt weg und vielleicht hat ja noch jemand Langeweile... ;)
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: site:.edu möglich?

Beitragvon Orbiter » Mo Jan 05, 2009 12:27 pm

Für eine Kombination der Masken dürfen die site: und filetype: Operatoren die Maske natürlich nicht neu definieren, sondern (gegenseitig) erweitern. D.h. die Funktion, die die Maske schreibt, muss die bisherige Maske 'verstehen' und parsen, dann erweitern.

eine andere Option wäre es, das searchQuery Objekt um die Operatoren zu erweitern. Das hätte insbesondere bei dem site-Operator den Vorteil, das man auch nach einem bestimmten URL-hash Pattern suchen kann, was viel viel schneller abgearbeitet werden kann (weil kein IO für URL-lookups nötig).
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: site:.edu möglich?

Beitragvon celle » Sa Jan 10, 2009 12:28 pm

Hallo,

ich habe den Site-Operator mal getestet und festgestellt das er nicht wirklich geht, also keine Ergebnisse liefert. Der Grund scheint PlasmaSearchQuery->CleanQuery zu sein. Im Querystring werden die Sonderzeichen aus Seps entfernt, unter anderem der Punkt ".". Damit wird dann zum Beispiel aus "versicherung site:www.test.de" -> "versicherung site:www test de". Das Problem ist jetzt, dass dieser Queryteil entfernt werden soll, jedoch "site:www.test.de" in "versicherung site:www test de" nicht existiert und damit nicht entfernt werden kann. Deshalb wir dann zwar der URL FIlter richtig gesetzt, im Query Objekt jedoch nach dem ganzen String "versicherung site:www test de" gesucht wird und dadurch nichts gefunden werden kann.

Kann man den "." aus seps entfernen, weil dann geht es und der String scheint nur bei cleanQuery benutzt zu werden, welches nur für Suchanfragen benutzt wird.

tschüss

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

Re: site:.edu möglich?

Beitragvon Orbiter » Sa Jan 10, 2009 12:40 pm

nachdem "site:www.test.de" ausgewertet ist, sollte es nicht mehr im Suchstring sein.
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: site:.edu möglich?

Beitragvon celle » Sa Jan 10, 2009 1:10 pm

Hallo,

jepp sollte es nicht sein, ist es bei mir aber. (in querystring sollte es schon bleiben für die Anzeige, aber nicht bei bei den QueryHashes)

Code: Alles auswählen
final TreeSet<String>[] query = plasmaSearchQuery.cleanQuery(querystring);
...
int site = querystring.indexOf("site:");
            if (site >= 0) {
                int ftb = querystring.indexOf(' ', site);
                if (ftb == -1) ftb = querystring.length();
                String domain = querystring.substring(site + 5, ftb);
                query[0].remove("site:" + domain.toLowerCase());
                while(domain.startsWith(".")) domain = domain.substring(1);
                if (domain.indexOf(".") < 0) domain = "\\." + domain; // is tld
                if (domain.length() > 0) urlmask = "[a-zA-Z]*://[^/]*" + domain + "/.*";
            }
...
final TreeSet<String> queryHashes = indexWord.words2hashes(query[0]);
            final plasmaSearchQuery theQuery = new plasmaSearchQuery(
                 querystring,
                 queryHashes, ...


query[0].remove("site:" + domain.toLowerCase()); sollte den String entfernen. Tut es auch wenn der String enthalten ist. Ist er aber nicht, da

Code: Alles auswählen
private static String seps = "'.,/&_"; static {seps += '"';}
..
    public static TreeSet<String>[] cleanQuery(String querystring) {
...       
int c;
        for (int i = 0; i < seps.length(); i++) {
            while ((c = querystring.indexOf(seps.charAt(i))) >= 0) { querystring = querystring.substring(0, c) + (((c + 1) < querystring.length()) ? (" " + querystring.substring(c + 1)) : ""); }
        }


die while Schleife die Punkte der Domain durch Leerzeichen ersetzt und damit in getrennte Wörter, die beim query[0].remove dann logischerweise nicht gefunden werden.

tschüss

celle

p.s im Moment SVN5464
celle
 
Beiträge: 47
Registriert: Mi Jun 27, 2007 11:52 am

Re: site:.edu möglich?

Beitragvon Low012 » Sa Jan 10, 2009 5:55 pm

Ich habe mal geschaut, wie ich verhindern kann, dass nur entweder urlmask oder site: oder filetype: oder inurl: benutzt werden kann.

Meine erste Idee, statt eines Strings für urlmask eine List<String> zu benutzt, die dann durchgegangen wird und dann ein Element der Liste nach dem anderen gegen den URL-String gematcht wird. Das würde auch ganz gut funktionieren, wenn dieser Filter nicht auch bei der Remotesuche benutzt würde und den Remotepeers als String geschickt wird. Wenn ich das nun ändern würde, wäre das nicht kompatibel mit allen alten Peers und praktisch wäre die Remotesuche kaputt, bis genug Leute ein Update gemacht haben. So geht es also nicht.

Die zweite Möglichkeit wäre, die verschiedenen regulären Ausdrücke zu verknüpfen, damit der kombinierte Ausdruck als String an die Remotepeers geschickt werden kann. Was passieren müsste wäre, dass Regex1 geprüft wird, dann zurück an den Anfang gegangen wird und geprüft wird, ob Regex2 passt. Das beißt sich aber mit dem Konzept der Regex, die vom Anfang zum Ende durchgehen.

filetype: und site: ließen sich noch ganz gut kombinieren, da site: den Anfang betrachtet und filetype: das Ende, aber bei urlmask und inurl: kann man nicht vorhersagen, wo da geschaut werden muss.

Weiß jemand eine Lösung? Habe ich ein Brett vor dem Kopf oder ist das wirklich so schwierig?
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: site:.edu möglich?

Beitragvon Lotus » So Jan 11, 2009 5:12 pm

Low012 hat geschrieben:filetype: und site: ließen sich noch ganz gut kombinieren, da site: den Anfang betrachtet und filetype: das Ende, aber bei urlmask und inurl: kann man nicht vorhersagen, wo da geschaut werden muss.

So habe ich mir das auch schon überlegt. Allerdings wäre urlmask und inurl: bei mir gleichwertig in der Funktion (inurl: überschreibt urlmask) und bei kombinierter Suche in der Reihenfolge site:+inurl:+filetype: zu einem Regex zusammengesetzt. Das führt zu doppelten .* hintereinander. Ich vermute ein String-Replace .*.* nach .* wäre aufgrund der vielen Anwendungen insgesamt performanter als es drin zu lassen. Edit: ein Test ergab bei 34 Sekunden Laufzeit (2 Mio. true matches) Unterschiede im Bereich eines Messfehlers. Das ist also irrelevant.
Lotus
 
Beiträge: 1699
Registriert: Mi Jun 27, 2007 3:33 pm
Wohnort: Hamburg

Re: site:.edu möglich?

Beitragvon Low012 » Mo Jan 12, 2009 9:35 am

Na das ist doch mal ein Plan! ;) Hättest du Zeit, das einzubauen? Ich komme wahrscheinlich in den nächsten Tagen nicht dazu, irgendwas an YaCy zu machen.

Was auch noch gemacht werden müsste: ganz unten im Code in /htroot/yacysearch.java wird urlmask wieder in zurückgegeben, aber die wurde ja zwischendurch geändert. Dadurch kommt es zu für den Benutzer möglicherweise undurchschaubaren Effekten.
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: site:.edu möglich?

Beitragvon Lotus » Mo Jan 12, 2009 4:05 pm

Ist nun eingebaut in r5478.
Ich habe gleichzeitig das urlmask Handling korrigiert. Suchparameter haben nun Vorrang und überschreiben die manuelle Maske.

Was du unten im Code meinst habe ich nicht gesehen. Die Stellen greifen alle schon auf die bearbeitete Maske zu.

Die Splittung + Zusammensetzung der Anfrage um site:foo.bar.com zu erlauben (wie auch von celle richtig erkannt) habe ich bisher nicht gemacht da ich noch keinen richtigen Überblick über die vielen Listen/Arrays in Java habe.
Lotus
 
Beiträge: 1699
Registriert: Mi Jun 27, 2007 3:33 pm
Wohnort: Hamburg

Re: site:.edu möglich?

Beitragvon Low012 » Mi Jan 28, 2009 10:22 am

Lotus hat geschrieben:Was du unten im Code meinst habe ich nicht gesehen. Die Stellen greifen alle schon auf die bearbeitete Maske zu.

Damit es nicht in Vergessenheit gerät (u.a. öffentliche Nachricht an mich selbst): Ich meinte damit, dass ich es störend finde, dass die Benutzung von z.B. site: die urlmask ändert, weil ein reiner Benutzer da wahrscheinlich keinen Zusammenhang sieht. Such doch einfach mal nach test site:de und schau dir dann auf der Seite mit den erweiterten Suchfunktionen die urlmask an. Wenn ich nicht weiß, dass die urlmask durch site: geändert wird, bekomme ich bei nachfolgenden Suchen für mich unerwartete Ergebnisse, die dann wahrscheinlich als "YaCy findet nichts" zusammengefasst werden.

Verantwortlich dafür ist, dass nicht der Parameter urlmask, der an das Servlet übergeben wird, auch in die Ausgabe geschrieben wird, sondern der geänderte Parameter, mit dem die Ergebnismenge gefiltert wird.

Wenn ich Zeit finde, werde ich versuchen, das heute Abend zu ändern. Sollte nicht kompliziert sein, ich muss nur dazu kommen...
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: site:.edu möglich?

Beitragvon Low012 » Do Jan 29, 2009 9:57 am

[x] done
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm


Zurück zu Wunschliste

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste