it-swarm.com.de

Abbrechen / Einschränken der Suche eines Benutzers

Ich entwickle eine Berichtsanwendung, mit der ein Benutzer einige Suchvorgänge in unserer Datenbank anhand eines extrem großen Datensatzes durchführen und diese in einer Tabelle auf einer Webseite anzeigen kann. Bei einer der Suchvorgänge werden möglicherweise zu viele Daten angezeigt, als dass die Webseite auf einer einzelnen Seite angemessen in HTML angezeigt werden könnte. Paginierungs- und "Mehr laden"/unendliche Bildlaufmodelle sind nicht möglich, da der Benutzer die Option zum Drucken oder Sortieren der gesamten Ergebnismenge benötigt. Das Exportieren der Daten in ein Nicht-HTML-Format ist möglich.

Ich muss den Benutzer darüber informieren, dass seine Suche nicht abgeschlossen werden kann (zumindest wie gewohnt), aber wie? Sollte ich die Teilausgabe mit einer Meldung wie "Bitte schränken Sie Ihre Suche ein" anzeigen oder sollte ich mich weigern, zu viele Daten anzuzeigen?

Das Anzeigen des großen Datensatzes auf der Seite führt zu einer sehr langsamen Ladezeit (> 30 Sekunden), und sie müssen die Suche erneut ausführen, um einen "vollständigen" Datensatz zu erhalten. Gleichzeitig befürchte ich, dass die Meldung "Bitte beschränken Sie Ihre Suche" zu vage ist. Ich kann ihnen sagen, wie viele mögliche Zeilen ihre Suche gezogen hätte und wie viele Zeilen ich anzeige, aber ich bin mir nicht sicher, wie ich das formulieren soll.

Wie kann ich einem Benutzer mitteilen, dass seine Suche abgebrochen wurde?
Der Benutzer hat ausdrücklich gesagt, dass er nicht möchte, dass die Daten mit Ausnahme des Drucks paginiert werden. Alle Ergebnisse müssen kontinuierlich sein.

2
Ben Brocka

Geben Sie ihnen nicht die Möglichkeit, einen ungültigen Benutzeroberflächenstatus zu erstellen.

Beispielsweise können Sie die Schaltfläche "Senden" standardmäßig deaktivieren, bis gültige Parameter eingegeben werden. Sie müssen kommunikativ sein, wie Sie dies erreichen können, aber es würde ihnen von vornherein helfen, anstatt nachträglich. Viele Reisewebsites funktionieren auf diese Weise. Hier ist eine, die wir vor einigen Jahren erstellt haben: Vacanceselect.nl - Schauen Sie sich das große Such-Widget auf der Homepage an, um ein Beispiel dafür zu finden, wovon ich spreche

1
Rahul

Sagen Sie ihnen, dass die Suche gestoppt wurde, aber erklären Sie warum (zu viele Ergebnisse). Da der Benutzer das System angewiesen hat, die Daten nicht zu paginieren, würde ich sie erneut als Option präsentieren.

Der Benutzer ist jedoch möglicherweise nicht in der Lage, seine Suche einzugrenzen. Daher würde ich es vorziehen, eine Teilausgabe anzuzeigen. Geben Sie ihnen außerdem die Möglichkeit, den Rest in einem anderen Format wie CSV abzurufen. Salesforce führt dies bei der Suche durch: Es werden bis zu 2.000 Ergebnisse angezeigt. Um den Rest (oder alles) zu erhalten, müssen Sie ihn nach Excel/CSV exportieren.

Die Tabelle (insbesondere das CSV-Format) sollte weniger ressourcenintensiv sein als eine große HTML-Tabelle.

3
andrewthong

Es kommt darauf an, was die "Belastungen Ihrer Hardware" bedeuten. Ist das einfach so, dass es ein Problem ist, die Anzahl der Ergebnisse auf einmal zu generieren? Oder wäre es ein Problem, diese Nummer überhaupt zu generieren? Oder ist die Belastung beim Ausführen der Suche zu groß - die Breite der Suche ist zu groß? Oder dass die Anzeige dieser Datenmenge auf den Clients ein Problem darstellt? Jedes davon hat eine andere Lösung. Es gibt drei Optionen, die ich vorschlagen würde:

  1. Kontinuierliche Paginierung, bei der die ersten 10/100/1000 Einträge zum ersten Mal erstellt werden und dann die nächsten 10/100/1000, die dieser Liste hinzugefügt werden, wenn sie fertig sind, usw., bis die gesamte Ergebnismenge angezeigt wird.

  2. Dynamische Beschränkung der Suchparameter auf sinnvolle Suchvorgänge. Dies hängt davon ab, ob dies möglich ist.

  3. Beschränken Sie die Suche auf 2000 Datensätze - machen Sie dies zu Beginn deutlich und beschränken Sie die Suche immer auf diese Grenze (die eine beliebige Anzahl sein kann). Wenn es mehr gibt, schreiben Sie eine Nachricht mit der Aufschrift "Es wurden mehr als 2000 Datensätze gefunden. Bitte beschränken Sie Ihre Suche weiter."

Und ich denke, "Suche/Auswahl einschränken" ist besser als "Suche einschränken".

1

Einige SQL/Data Warehouse-Clients müssen sich mit diesem Problem befassen. Eine Möglichkeit, dies zu lösen, besteht darin, Benutzern die Möglichkeit zu geben, eine Vorschau ihrer Suche anzuzeigen, bevor sie sie ausführen. Der Workflow ist:

  1. der Benutzer gestaltet die Suche durch Angabe der Parameter und der Abfrage
  2. der Benutzer wählt die Option "Vorschau suchen"
  3. Das System zeigt eine Suchvorschau an. Diese kann die Größe der Ergebnismenge, die ersten xx Ergebnisse und die geschätzte Ausführungszeit enthalten
  4. der Benutzer kann die Abfrage fein abstimmen. Wenn er zufrieden ist, wählt er die Option "Suche ausführen", die, wie @andrewthong andeutet, Optionen für das Format bietet (Webseite, CSV, Excel).

Wenn Sie diesem Modell folgen, sollten Sie einem Benutzer niemals mitteilen müssen, dass er nicht eine Suche durchführen kann. Sie legen lediglich eine Erwartung der Kosten für die Ausführung fest.

Schließlich kann es Ihnen helfen, dies als "Bericht" -Problem und nicht als "Such" -Problem zu betrachten. Viele Webanwendungen, die ich täglich verwende, verfügen über Berichtsfunktionen (Rally, JIRA, Salesforce, CODA, Oracle Discoverer). Ich gehe davon aus, dass einige von Ihnen möglicherweise auch Funktionen haben. Spielen Sie mit ihnen herum, vielleicht bekommen Sie gute Ideen.

1
Jon White

@Erics hat einen ausgezeichneten Punkt (und sollte es eine Antwort machen). Sie können die ersten X-Ergebnisse anzeigen und eine Schaltfläche mit der Aufschrift "100 weitere Ergebnisse laden" anzeigen, wie dies manchmal auf dem iPhone und an anderen Stellen der Fall ist.

0

Wenn Ihre Seite mit Transfer-Encoding: chunked mit mehreren Blitzen bedient wird, beginnt der Browser mit dem Rendern der Seite, bevor sie vollständig heruntergeladen wird.

http://www.phpied.com/progressive-rendering-via-multiple-flushes/ spricht ausführlich über die Technik.

0
Emil

@Vitaly - meinst du ContinuousScrolling? http://ui-patterns.com/patterns/ContinuousScrolling

0
puppi