amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Forum und Interna > Verbesserungsvorschlag: Suche im Forum [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

14.07.2006, 14:08 Uhr

DrNOP
Posts: 4118
Nutzer
'Nabend.

Ich hab' grade die Suchfunktion im Forum benutzt, da scheint's neuerdings eine Aufbereitung auf verschiedene Seiten zu geben, nicht mehr nur eine lange Liste mit Ergebnissen.

Schön wäre nur, wenn man erkennen könnte wieviele Treffer man insgesamt hat. Es steht zwar oben "30 Treffer pro Seite" und unten steht die Seitennummer - aber es steht nirgends wieviele Treffer insgesamt ich habe oder wieviele Seiten insgesamt ich habe.
--
Signaturen mit mehr als zwei Zeilen gehen mir auf den Wecker

[ - Antworten - Zitieren - Direktlink - ]

14.07.2006, 20:51 Uhr

Maja
Posts: 15429
Nutzer
Wozu sollte es nützlich sein, zu wissen, wie viele Treffer es insgesamt sind? Für die Suche nach einem bestimmten Beitrag jedenfalls nicht.

[ - Antworten - Zitieren - Direktlink - ]

14.07.2006, 21:32 Uhr

Andreas_B
Posts: 3121
Nutzer
@Maja:
>> Wozu sollte es nützlich sein, zu wissen, wie viele Treffer
>> es insgesamt sind?

Damit man, wenn es zu viele Ergebnisse sind, die Suche gleich noch einmal, vielleicht mit anderen Parametern, durchführen kann, anstelle erst zig Seiten zu durchsuchen, in der Vermutung, dass es ja nur ein paar sein werden.

Ciao,
Andreas.

[ - Antworten - Zitieren - Direktlink - ]

14.07.2006, 23:59 Uhr

_PAB_
Posts: 3016
Nutzer
@DrNOP:
Der Trick ist eben, daß die Suche so schneller zu ersten Resultaten führt, wenn ich auf je 30 begrenze.
Andernfalls könnte es passieren, daß erstmal 1-2 Minuten garnichts passiert, wenn die Suche zu spezifisch ist.
Anhand des Beitrags-Datums kannst Du übrigens schon gut erkenne, ob es eher viele oder eher wenige Beiträge sind, denn die sind ja nach Datum sortiert.

[ - Antworten - Zitieren - Direktlink - ]

15.07.2006, 13:47 Uhr

Maja
Posts: 15429
Nutzer
@_PAB_:

> Anhand des Beitrags-Datums kannst Du übrigens schon gut erkenne,
> ob es eher viele oder eher wenige Beiträge sind, denn die sind ja
> nach Datum sortiert.

Entschuldige, solange ich nicht weiß, welches Datum der letzte Treffer trägt, sagt das Datum des ersten Treffers über die Gesamtzahl der Treffer nichts aus. Egal, ob auf- oder absteigend sortiert. Hinzu kommt, dass es druchaus häufig Mehrfachtreffer mit demselben Datum gibt.


[ - Antworten - Zitieren - Direktlink - ]

15.07.2006, 14:45 Uhr

_PAB_
Posts: 3016
Nutzer
@Maja:
Ich sage ja auch nicht, daß das Datum die Lösung schlechthin ist, aber es ist ein gutes Indiz.
Ist man nach 30 Resultaten noch in der aktuellen Woche, sollte klar sein, daß es noch viele Resultate gibt.

Problem an der Sache ist leider, daß man erstmal die Suche komplett durchführen muß, um die Anzahl der Treffer bestimmen zu können - das hieße dann aber, daß die Suche jedesmal sehr lange dauert, egal, ob es viele oder wenige Resultate gibt. Und auch für jeden einzelnen Seitenaufruf.

Die Alternative ist, sich gleich alle Treffer auf einer Seite anzeigen zu lassen - was bereits geht.

[ Dieser Beitrag wurde von _PAB_ am 15.07.2006 um 14:47 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

15.07.2006, 15:58 Uhr

Maja
Posts: 15429
Nutzer
@_PAB_:

> Ist man nach 30 Resultaten noch in der aktuellen Woche, sollte klar sein, daß es noch viele Resultate gibt.

Nicht unbedingt. Aber lassen wir das.

> Problem an der Sache ist leider, daß man erstmal die Suche
> komplett durchführen muß, um die Anzahl der Treffer bestimmen zu
> können - das hieße dann aber, daß die Suche jedesmal sehr lange
> dauert, egal, ob es viele oder wenige Resultate gibt. Und auch für
> jeden einzelnen Seitenaufruf.

Das ist für die Suche hier völlig richtig. Die Wartezeiten wären unzumutbar lang.

Wie schaffen es Suchmaschinen, 1,xx Mio. Treffer in 0,xx Sekunden aus dem gesamten Internet zu melden?

[ - Antworten - Zitieren - Direktlink - ]

15.07.2006, 21:01 Uhr

DrNOP
Posts: 4118
Nutzer
Zitat:
Original von _PAB_:
Problem an der Sache ist leider, daß man erstmal die Suche komplett durchführen muß, um die Anzahl der Treffer bestimmen zu können - das hieße dann aber, daß die Suche jedesmal sehr lange dauert, egal, ob es viele oder wenige Resultate gibt. Und auch für jeden einzelnen Seitenaufruf.

Äh, wie jetzt? Du führt die Suche aus bis du 30 Treffer beieinander hast, unterbrichst sie dann, merkst dir wo du warst, zeigst die Seite an und führst die Suche vom gemerkten Punkt aus weiter, sobald der User auf "nächste seite" drückt? Das ist aber auch nicht der Weisheit letzter Schluß, oder? ;)
Da könntest du dir über den Seitenwechsel hinweg auch merken, wieviele Treffer insgesamt es sind. Dann dauert die Suche bei den folgenden Seiten schon nicht mehr so lange.
--
Signaturen mit mehr als zwei Zeilen gehen mir auf den Wecker

[ - Antworten - Zitieren - Direktlink - ]

16.07.2006, 11:34 Uhr

mact
Posts: 102
Nutzer
Moin,

> Problem an der Sache ist leider, daß man erstmal die Suche komplett durchführen muß, um die Anzahl der Treffer bestimmen zu können

Das macht mySQL aber üblicherweise sowieso, denn wie sollte das Suchergebnis sonst sortiert werden? Wenn Du die 30 beliebigen ersten Treffer nimmst, wäre die Suche ja nicht reproduzierbar und damit sinnlos.
Und mySQL liefert problemlos auch bei einem mit Limit und Sort aufbereiteten Suchergebnis die Gesamttrefferzahl. Steht wenigstens so in der Dokumentation :-)

[ - Antworten - Zitieren - Direktlink - ]

16.07.2006, 14:49 Uhr

_PAB_
Posts: 3016
Nutzer
@DrNOP, mact:
Lest mal über den SQL-Befehl "LIMIT"...
Die Suche wird bis zum Limit X ausgeführt und dann abgebrochen.
Klickt man auf "nächste Seite", überspringt mySQL die ersten X Einträge und bricht dann nach 2*X ab, so ist die Suche auch bei sehr vielen Resultaten sehr schnell und wird erst langsam, wenn man sich bis auf die letzte Seite durchklicken will. Nachteil ist auch, daß man die Anzahl der Treffer nicht weiß.
Aber wie gesagt: "alle Treffer anzeige" und ihr habt, was ihr wollt.
Die Seite ist so gestrickt, daß die Resultate unmittelbar im Browserfenster auftauchen, auch wenn die Seite noch nicht komplett geladen ist - und das Laden der Seite kann man übrigens auch abbrechen, wenn man merkt, daß der Scrollbalken zu einer Haarlinie wird... ;-)

[ - Antworten - Zitieren - Direktlink - ]

16.07.2006, 14:51 Uhr

_PAB_
Posts: 3016
Nutzer
@Maja:
> Wie schaffen es Suchmaschinen, 1,xx Mio. Treffer in 0,xx Sekunden aus dem gesamten Internet zu melden?

Sie benutzen erstens völlig andere Datenbanken-Typen, die auf die Aufgabe optimiert sind und zweitens haben die auch locker 1000 Rechner auf einem Haufen stehen, die gemeinsam und parallel an der Suche arbeiten.

[ - Antworten - Zitieren - Direktlink - ]

16.07.2006, 16:13 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Maja:
Wie schaffen es Suchmaschinen, 1,xx Mio. Treffer in 0,xx Sekunden aus dem gesamten Internet zu melden?


Das merkst Du, wenn Du mal versuchst, wirklich alle 1,xx Mio. Treffer durchzuklicken. Die Zahl ist ein Schätzwert, der sich durchaus mehrfach ändern kann (und wird).

Ich hab es schon erlebt, daß bei nur drei Ergebnisseiten beim Wechsel von der ersten zur zweiten die dritte schon nicht mehr existierte. (Beim Versuch, von der ersten direkt zur dritten zu springen, landete man bei der zweiten). Die Abweichung bei "1,xx Mio. Treffer" dürfte noch deutlich höher ausfallen. Aber Du kann eh nicht direkt zum 1,xx Millionsten Treffer springen, sondern nur in maximal zehn-Seiten Sprüngen vorwärts gehen.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

16.07.2006, 16:36 Uhr

AndreasM
Posts: 2478
Nutzer
Achja, weils gerade zum thema passt.

Sucht man nach Beiträgen eines Users, z.b. Nico, und die Suchroutine kommt zu einen Beitrag der nicht mehr exestiert dann wird einfach abgebrochen.

Keine Ahnung wie ich es erklären soll. Sucht einfach nach den Beiträgen von Nico. Auf der 3. Seite kommt die Fehlermeldung:

Fehler
Der Server meldete folgenden Fehler:
Das gewünschte Thema existiert nicht (mehr)!


--
Andreas Magerl
APC&TCP
Amiga Future
AmiATLAS, CygnusEd, DigiBoosterPro, Med Soundstudio 2...

[ - Antworten - Zitieren - Direktlink - ]

16.07.2006, 16:42 Uhr

Musicman
Posts: 540
Nutzer
@AndreasM:
bin jetzt gerade bis zur 7ten Seite gekommen und hab dann aufgehört weiter zu klicken.

Also bei mir gehts.

Nur was mir auch nicht gefällt ist die Anzahl der gesamten Treffer.
Die wird nirgens angezeigt.

Wäre nicht schlecht wenn man da was machen könnte. :D

Gruss Musicman :commo:

[ - Antworten - Zitieren - Direktlink - ]

16.07.2006, 16:46 Uhr

mact
Posts: 102
Nutzer
Moin, PAB,

ich empfehle Dir ebenfalls, die Dokumentation zu mySQL's "Limit" zu lesen.

Der Search-Query dieses Forums führt zunächst ein "order by" aus und wird erst danach limitiert. Für ein "order by" muss das Suchergebnis aber bereits komplett sein, es kann also nicht bereits beim Auffinden von 30 Ergebnissen abgeschnitten werden.
Nutzt man Indizes und den mySQL-Cache korrekt (siehe Dokumentation), so wäre nur ein tatsächlicher Abbruch vor jedem Ordering oder Grouping messbar schneller als ein nachträgliches(!) Limitieren vor dem Pipe an PHP.

Und was hast Du gegen "SQL_CALC_FOUND_ROWS"?


[ - Antworten - Zitieren - Direktlink - ]

17.07.2006, 00:39 Uhr

_PAB_
Posts: 3016
Nutzer
@mact:
Stimmt - das ORDER BY hatte ich übersehen !
Dann bringt es ja von der Performance leider garnichts auf ein LIMIT ohne Trefferanzahl zu setzen...
Hmm, dann kann ich ohne Aufwand auch die Treffer anzeigen lassen - sollte ab sofort funktionieren.

Leider sind die Posts ja chronologisch, aber mit den ältesten zuerst sortiert, sonst hätte ich die Suche mit obiger Taktik ja deutlich beschleunigen können...

@AndreasM:
Was Du beschreibst, kann eigentlich nur passieren, wenn jemand in dem Moment der Suche einen Beitrag gelöscht hat.
Falls Du das reproduzieren kannst, nenne mir bitte exakt alle Sucheinstellungen.

[ - Antworten - Zitieren - Direktlink - ]

17.07.2006, 14:22 Uhr

Maja
Posts: 15429
Nutzer
@_PAB_:

Danke für Deine Mühe.

> Hmm, dann kann ich ohne Aufwand auch die Treffer anzeigen lassen - sollte ab sofort funktionieren.

Für die Suche nach Begriffen in Beiträgen funktioniert es nun sehr gut (xxx Treffer, 30 pro Seite).

Was die Suche nach Beiträgen von Mitgliedern betrifft, bekomme ich als Ergenis hier immer "31 Treffer, 30 pro Seite", egal für welches Mitglied. Die gesamte Trefferzahl erhält man da nur, wenn man als Suchoption "alle Treffer anzeigen" wählt, was nun leider bewirkt, dass alle Treffer in einer einzigen Seite gelistet werden, was recht lange dauern kann.

[ - Antworten - Zitieren - Direktlink - ]

17.07.2006, 15:01 Uhr

_PAB_
Posts: 3016
Nutzer
@Maja:
Hab's repariert und noch eine Möglichkeit hinzugefügt, jede beliebige Seite anzuspringen (siehe am Ende der Seite).

[ - Antworten - Zitieren - Direktlink - ]

17.07.2006, 15:13 Uhr

Maja
Posts: 15429
Nutzer
@_PAB_:

Feine Sache. Danke!

Herzlichen Dank auch an mact für den entscheidenden, den "gordischen Knoten" lösenden Tipp! :)

[ Dieser Beitrag wurde von Maja am 17.07.2006 um 15:15 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

17.07.2006, 15:31 Uhr

Andreas_B
Posts: 3121
Nutzer
@_PAB_:
Gefällt mir jetzt auch wesentlich besser. Danke!

Ciao,
Andreas.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Forum und Interna > Verbesserungsvorschlag: Suche im Forum [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.