EnterpriseSearch ohne Sessions

Hallo First-Spirit Community,

das aktuelle Enterprise Search Modul ist so implementiert, dass ein Servlet für die Ausführung der Suche zuständig ist und dann mittels HTTP-Redirect auf eine JSP weiterleitet, auf der man mittels Taglib die Ergebnisse darstellt.

Die Kommunikation zwischen Servlet und Taglib erfolgt dabei über eine HTTP-Session. Das ist aus meiner Sicht nicht sehr geeignet für diesen Zweck und auch bei Verwendung von Exalead5 nicht notwendig wie man z.B. an der von Exalead mitgelieferten Search-UI sehen kann. Dort sind alle für die Suche notwendigen Parameter direkt in der URL.

Dabei zu Bedenken ist folgendes: Exalead dient nicht nur zur Suche, sondern wird auch für Navigation verwendet. Wir generieren Produktübersichtsseiten mit Exalead damit wir dort Filter als Facettennavigation anbieten können. Die Bindung an die Session führt dort dazu dass

- die Übersichtsseite immer die gleiche URL behält (unabhängig davon ob man auf Seite 1, 2 oder x ist)

- Side-Effects auftreten wenn man mit mehreren Tabs surft (ein zweiter Exalead-Request im neuen Tab ersetzt den ersten)

- die URL nicht für eine bestimmte Information steht

Evtl. gibt es Anwendungsfälle bei denen die Suche über die Session gewünscht ist, aber das könnte man am Tag search:container ja konfigurierbar machen.

Ausserdem wäre es bei der Gelegenheit auch fein über die Taglib eine Suche initiieren zu können ähnlich wie das Tag loop_tophits gedacht ist. Im Fall der Facettensuche müssen wir z.B. bei Aufruf der Übersichtsseite einer Produktkategorie eine Exalead-Suche durchführen die alle Produkte aus der Kategorie findet und nehmen dies dann als Basis für weitere Filter und fürs Paging.

Technischer Hintergrund:

Ich habe mir die von euch verwendete Taglib angeschaut, ich denke man könnte anstatt der HTTP-Redirects auch mit Forwards arbeiten und so im Request-Scope bleiben. loop_tophits funktioniert ja auch schon ohne Session, kann aber nicht für Folge-Requests benutzt werden.

Das was ihr derzeit in der Session haltet scheint (ausser den Results) nur der Exalead ContextString (aus com.exalead.searchapi.xmlv10.client.SearchAnswer.getInfos().get("context") zu sein. Das kann man auch in der URL übergeben.

1 Comment
kohlbrecher
Crownpeak employee
Crownpeak employee

Hallo Michael,

vielen Dank für deine Idee zur Verbesserung von FirstSpirit. Es ist uns wichtig, aus den Erfahrungen unserer Kunden und Partner zu lernen. Aus diesem Grund schätzen wir Feedback und freuen uns über jede Anregung.

Wir haben das Thema noch einmal evaluiert, haben aber keine Pläne, es in absehbarer Zukunft zu bearbeiten. Daher können wir deinen Feature Request zum aktuellen Zeitpunkt leider nicht berücksichtigen.

Detaillierte Informationen bezüglich des Auswahlprozesses der Requests, die wir umsetzen, haben wir in unserer Features Policy zusammengefasst. 

Viele Grüße

Jan