-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Festlegung der Syntax für Suche in Listen #191
Comments
Erste Überlegungen zur Suchsyntax in der ReferenzarchitekturGrammatik
Pragmatik
Anfrage an Backend
|
Das verstehe ich nicht. Ist es nicht so, dass die Suche bei uns immer im Kontext einer Entität statt findet? D.h. wenn ich ein Gehege mit einem bestimmten Namen haben will, dann brauche ich doch nicht "des Geheges". Bevor wir hier Aufwand rein stecken, fände ich es hilfreich zu verstehen, warum wir das brauchen. Die Behauptung, dass die natürlich Syntax oft eine Nominalphrase ist, hilft mir da nicht weiter. |
Du hast vollkommen recht, dass der Kontext eigentlich klar ist.
Lass mich das ausführen, weil ich in der obigen Beschreibung etwas zu knapp war.
Das erfordert etwas aufwändige Vorverarbeitung im Frontend, aber wäre - aus meiner Sicht - eine relativ gut bedienbare Lösung. |
Im einfachsten Fall aus der Nutzerdoku. Menschen die solche Suchen (neben der freien Suche) nutzen sind ja in der Regel Poweruser. Die geben heute Schlüsselnummern ein, um Dinge zu tun. Um das zu vereinfachen haben wir #181.
Das ist nicht so einfach wie es sich anhört, weil der Bezug Anzeigename und Attribut ausschließlich über eine Locales Datei (die jederzeit geändert werden kann) hergestellt wird. D.h. der Anzeigename ist vollkommen willkürlich durch die Fachdienststelle gewählt. Sollte ein Verfahren eine spezielle Suche benötigen, dann bin ich der Meinung, dass dies durch das Projekt, genau auf die Bedürfnisse der Fachdienststelle zugeschnitten, implementiert werden sollte. Wir unterstützen mit unserer Arbeit, damit Projekte bei der INDIVIDUAL Programmierung schneller und hoffentlich auch besser werden. Zu einer Individual Programmierung gehört auch, dass bestimmte Dinge individuell für einen bestimmten Fall hergestellt werden. |
Naja, unser Anspruch ist ja schon, dass die Oberfläche weitgehend selbsterklärend ist. Auch als Nicht-Poweruser möchte ich schnell mal eine einfache Suche hinrotzen können, ohne in einer Dokumentation nachlesen zu müssen.
Wir haben, wenn ich das richtig verstanden habe, noch nicht letztgültig definiert, ob die Abbildung von "Attributname" bzw. "technischer Spaltenname" im Front- oder Backend stattfindet. So etwas hängt von der Komplexität der Oberfläche ab und ob man beispielsweise ohne Backendzugriff Sprachumschaltungen zulassen will und vieles mehr. In den meisten unserer Fälle wird die Lokalisierung - und so verstehe ich Deinen Einwurf - aber mit Hilfe einer Locales-Datei im Frontend gemacht werden, d.h. dort findet die Abbildung von technischem Attributnamen auf die angezeigten Spaltenbeschriftungen statt. Im obigen Vorschlag hatte ich geschrieben, dass es eine Abbildungsmethode "displayedToTechnicalHeadingMap" gibt; die würde genau die Information der Locales-Datei benutzen. D.h. wir haben hier kein Wartungsproblem. Es könnte höchstens sein, dass der Fachbereich mal für unterschiedliche Spalten dieselben Beschriftungen vorsieht; dann klappt die Heuristik des obigen Algorithmus natürlich nicht mehr... Für AdHoc-Suchen trägt der Ansatz mit der Suche mit Spaltenbeschriftungen; bei vorgefertigten Suchen, die über längere Zeit funktionieren müssen, sollten eher die technischen Namen verwendet werden: dann ist man von der Lokalisierung unabhängig. Ich gebe schon zu, dass in meinem Vorschlag viele Verarbeitungsschritte bereits im Frontend ausgeführt werden müssen. Aber wenn ich mir das zutraue, das selbst in Javascript zu implementieren, dann kann es sicher nicht megaschwierig sein ;-)
Hmm, wir beide vertreten die verschiedenen Enden des Spektrums: Du bist eher für ein Gerüst, das durch den Entwickler gefüllt wird; ich bin für die Maximalgenerierung. Bei der Suche denke ich, sollten wir schon eine Engine vorgeben, damit man etwas hat, was für viele Belange taugt. Es spricht ja nichts dagegen, diese Suche durch individuelle Lösungen ersetzen zu können. Klingt nach Diskussion in der Gruppe oder wir treffen uns mal auf einen Kaffee? |
Also ich finde den Vorschlag von @Dr-Thomas-Tensi sehr gut und umfassend. Und es ist ja tatsächlich im aktuellen Beispiel so, dass es bei den Enclosures eine Spalte gibt, die "Name des Geheges" überschrieben ist. Und da wüsste ich als Nutzer jetzt nicht ohne weiteres, was der technische Schlüssel im Suchfeld dafür ist. Ich kann auch nachvollziehen, dass wir das Mapping von Spaltenüberschriften auf technische Feldschlüssel über die Information in der locales-Datei machen können. Aber: Ich schätze das als relativ komplex ein, das zu implementieren. Das wird nix für Meilenstein 1 und meiner Meinung nach ist das auch für Meilenstein 2 schwer zu bewältigen (@ejcsid weiß hier mehr, da sie sich schon mit der Suche im Backend beschäftigt hat). Wenn du dir das aber zutraust, fände ich das nicht schlecht. Was meinen die anderen? @Baumfrosch @ejcsid @dragonfly28 |
Wenn ich es richtig verstanden habe, setzen wir im Backend Lucene ein. Ich hätte erwartet, dass wir die Lucene-Parser-Syntax mit möglichst wenigen Veränderungen an die Oberfläche bringen. Damit hätten wir wenig Aufwand, aber die Mächtigkeit von Lucene. Konkret vermisse ich
Hier würde ich wie Lucene auf Großbuchstaben setzen, evtl. in Englisch. Erspart Internationalisierung und ist man vom Outlook-Client gewohnt ;-) Die Schlüssel würde ich auch von den Headern trennen, um flexibler zu sein. So könnte man Kürzel z.B. einführen. Sie sollten aber zu 90% identisch sein. Ich hoffe, das hilft erstmal. |
Für die Suche in unseren Listen gibt es bereits eine Basisimplementierung, die im Wesentlichen die Suchsyntax aus GitHub nachbildet.
Es sind per Leerzeichenfolgen getrennte Folgen von jeweils durch Doppelpunkt getrennten Schlüssel-Wert-Paaren. Ein Wert darf auch in Doppelapostrophen eingeschlossen sein, damit man Sonderzeichen als Wertbestandteil angeben kann (insbesondere Leerzeichen).
Diese Syntax klappt bei GitHub gut, weil dort die Schlüssel immer Worte sind; bei uns ist aber die natürliche Syntax oft eine Nominalphrase mit Leerzeichen (z.B. "Name des Geheges").
Das ließe sich auch wieder mit Quoting auflösen, aber dann wird die Syntax unhandlich. Insbesondere gibt es auch weitere Anforderungen an die Suchsyntax wie z.B. liberale Leerzeichensetzung, ODER-Junktor, Wildcards, Klammerung usw., die die Komplexität der Eingabe (und Verarbeitung ;-) nach oben treiben.
Ich biete an, eine vollständige Syntax zu überlegen, mit Euch abzustimmen und die JavaScript-Frontend- und Java-Backend-Implementierung dazu zu machen.
Meinungen?
The text was updated successfully, but these errors were encountered: