Kürzlich haben wir ein zweimonatiges Experiment gestartet, um eine neue Sucherfahrung auf Discourse zu prototypisieren.
Bitte testen Sie es unter https://meta.discourse.org/instant-search
Wenn Sie Ihre Erfahrungen besprechen möchten, können Sie gerne einen Chat bei einem Anruf vereinbaren. Wir freuen uns über jedes Feedback
Funktionen
-
Schnelle Suche
-
Möglichkeit, Themen, Beiträge, Chatnachrichten und Benutzer zu durchsuchen
- Beiträge und Themen Ergebnisse enthalten PMs
- Chatnachrichten enthalten private Kanäle und DMs
-
UI-basierte Filter für Dinge wie Tags, Kategorien, Benutzer, Posteingänge, Kanäle usw.
-
Keyword-, Semantik-, Hybrid- und Hyde-Suchmodi
FAQ
Suche funktioniert nach einer Weile auf der Seite nicht mehr
Das stimmt; bitte aktualisieren Sie die Seite.
Es unterstützt unsere Suchgrammatik nicht, wie z. B. @user oder #category
Das stimmt nicht, aber es ist etwas, das leicht hinzugefügt werden kann, wenn wir uns entscheiden, dies zu veröffentlichen.
Die Tatsache, dass die Suche nach Themen und Beiträgen getrennt ist, ist eine seltsame Wahl
Ich kann verstehen, warum, besonders wenn Sie daran gewöhnt sind, wie die Discourse-Suche seit einem Jahrzehnt funktioniert. Wenn wir uns entscheiden, dies zu veröffentlichen, könnten wir einen Modus erstellen, der beides gleichzeitig tut, oder sogar beides ausführen und beide in der Benutzeroberfläche anzeigen. Für die Einschränkungen dieses Experiments war dies der einfachste Weg, beide Anwendungsfälle zu adressieren:
- Ich weiß, dass dieses Thema existiert und möchte es nur finden (Themensuche)
- Ich möchte jedes Vorkommen dieser Abfrage recherchieren (Beitragssuche)
Die Qualität der Ergebnisse ist noch nicht ganz da
Wir haben uns kaum damit beschäftigt, was hier möglich ist; im Moment priorisieren wir nur Kategorien und weisen Titeln und Inhalten Gewichte zu. Dies müsste weiter angepasst werden, um die Verfeinerung zu erreichen, die wir bei der bestehenden Suche haben, bringt aber auch die Möglichkeit, weiter zu gehen. Leider wird vieles über die JS-API gesteuert, und die Bibliothek, die wir verwenden, hat uns hier ziemlich eingeschränkt.
Semantisch / HyDE / Hybrid sind langsam
Wir haben hier einen größeren Debounce hinzugefügt, um einige Ärgernisse mit der JS-Bibliothek zu umgehen, die wir verwenden. Wenn wir uns entscheiden, dies zu veröffentlichen, ist diese JS-Bibliothek die erste auf der Abschussliste. Was die Gesamtgeschwindigkeit dieser betrifft, so hängen sie von zwei Anfragen ab, der ersten für Embeddings, die auf alter Hardware bei AWS läuft, und das hilft nicht. Wir könnten auch Embeddings im Middleware-Proxy injizieren, um die Latenz zu reduzieren. Auch hier sind die Zeitbeschränkungen des Experiments zu beachten.
Technische Details
-
Dieses Experiment verwendet Typesense, einen Open-Source-Klon von Algolia. Es läuft auf einer EC2-Instanz am selben Ort wie alles andere auf dem Meta-Hosting.
-
Das Frontend fordert Typesense nicht direkt an; stattdessen werden alle Aufrufe über die Discourse-App über ein Rack-Middleware geleitet.
-
Die Suchleiste / Ergebnisse / Filter verwendet InstantSearchJS, verpackt in EmberJS. Leider hat diese Bibliothek viele Probleme verursacht, und wir werden sie nicht verwenden, wenn wir dies veröffentlichen.
-
Der Server verwendet 7,35 GB RAM, um alle Metadaten zu indizieren. Beachten Sie, dass dies hauptsächlich auf Embeddings zurückzuführen ist; ohne Embeddings wären es weniger als 2 GB.




