Umstieg von Unterkategorien auf Tags?

Gibt es ein Limit für die Anzahl der Tags, die eine Kategorie/Community haben kann?

Themen oder Tags? In beiden Fällen sollten Sie niemals an ein Limit stoßen.

Ich meine Tags.
Ich arbeite an einem Forumsdesign, das Unterkategorien abschafft (da wir Tausende erreicht haben und die Suche sowie das Abonnieren spezifischer Kategorien zunehmend langsam wurde), und verlagert all dies auf Tags. Tags werden auf Kategorien beschränkt sein, aber die Gesamtzahl wird über 1000 liegen und langfristig sogar noch mehr betragen. Ist damit eine bessere Performance im Vergleich zu Unterkategorien zu erwarten?

Kann ich zudem neue Themen/Beiträge in einem Tag abonnieren?

Ja, absolut. Tags sind im Vergleich zu Kategorien/Unterkategorien extrem leichtgewichtig.

Das kannst du! Am Ende des Leitfadens findest du einen Link zu https://meta.discourse.org/t/how-do-i-set-tag-tracking-level-defaults-historically/111371/1, über den du Standard-Beobachtungseinstellungen für Tags für alle deine Benutzer festlegen kannst. Diese Einstellungen können auch von einzelnen Benutzern angepasst werden, wenn sie die Themenliste eines Tags anzeigen, oder über ihre Benutzereinstellungen (/my/preferences/tags).

Vielen Dank für eure Antworten. Das war wirklich hilfreich!
Eine Sache möchte ich noch klären:

Kann ich über die Admin-API ein neues Tag erstellen? Ich sehe diese Option in der Tags-API nicht; sie erlaubt mir nur, neue Tag-Gruppen zu erstellen/aktualisieren.

Mein zweiter Gedanke war, ein neues Thema zu erstellen und meine gewünschten Tags über die API hinzuzufügen, aber die verfügbaren Optionen in der Dokumentation enthalten kein tags-Feld.

Hier sind meine Optionen:

Warum ich das brauche:
Ich möchte testen, wie sich mein System verhält, wenn ich 5000 Tags habe.
Außerdem werde ich das irgendwann benötigen, wenn ich meine Themen von Unterkategorien auf Tags migriere. Ich muss diese Tags dann zuerst erstellen.

Wenn ich versuche, eine Anfrage zum Erstellen einer Tag-Gruppe mit neuen Tag-Namen zu senden, versuche ich Folgendes:

# Python
 payload = {
    'api_key': constants.DISCOURSE_RAILS_API_KEY,
    'api_username': constants.DISCOURSE_RAILS_API_USERNAME,
    'name': 'new-tag-group',
    'tag_names': ['new_tag1', 'new_tag2']
}

Dies erstellt die neue Tag-Gruppe erfolgreich, aber die Antwort enthält keine Tags im tag_names-Array:

'_content': '{"tag_group":{"id":6,"name":"new-tag-group","tag_names":[]"}'

Wenn ich dies jedoch über das Administrationspanel versuche und den Netzwerkaufruf betrachte, werden sie ähnlich gesendet:
Screen Shot 2020-06-05 at 5.53.51 PM

Mache ich bei der Anfrage etwas falsch?

Tags werden bei der ersten Anwendung erstellt, sodass Sie mindestens ein Thema mit dem neuen Tag erstellen müssen, damit es verfügbar ist. Ich vermute, dass dies ein Fall ist, in dem die API-Dokumentation nicht alle möglichen Optionen enthält. Wenn Sie planen, mit der API zu arbeiten, empfehle ich Ihnen, Reverse engineer the Discourse API zu besuchen.

Wenn Sie über die Benutzeroberfläche ein Thema mit einem neuen Tag erstellen und den XHR-Verlauf in den Entwicklertools Ihres Browsers prüfen, sollten Sie etwas Ähnliches wie Folgendes sehen (beachten Sie das Array der Tags):

Sobald das Tag erstellt ist, sollten Sie eine Methode wie Alle Themen innerhalb einer Kategorie mit Tags versehen und anschließend Alle Themen von einer Kategorie in eine andere verschieben verwenden können, um das zu erreichen, was Sie suchen.

Vergessen Sie nicht, vor dem Ausführen von Rake-Aufgaben wie diesen ein Backup zu erstellen :slight_smile:

Danke für die Hilfe, Taylor! Zum Glück hatte ich das schon nach meinem letzten Kommentar selbst herausgefunden.
Ich habe dafür die API zum Erstellen von Tag-Gruppen verwendet.
Das Problem ist, dass (wie auf dem Foto zu sehen) der erwartete JSON-Schlüssel tag_names[] und nicht tag_names lautet.

In der API-Dokumentation unter Discourse API Docs steht jedoch tag_names. Sollte das zur besseren Klarheit aktualisiert werden?

Kein Problem! Schön, dass du es herausgefunden hast. Da das alles in Zukunft für jemanden nützlich sein könnte, habe ich es in ein neues Thema verschoben (es wäre automatisch gelöscht worden, wenn es im How-To-Thema geblieben wäre).

Das klingt definitiv so. @blake könnte sich vielleicht äußern, sobald er Zeit hat.

Ja! Es muss wahrscheinlich aktualisiert werden. Ich habe es auf meine Liste gesetzt.

Hey Taylor, eine weitere Anfrage zur Beratung:

Ich habe diese Links zu Massenvorgängen gefunden, bin mir aber unsicher, wie ich sie in der Produktionsumgebung verwalte.
Ich habe keinen Zugriff auf die Instanz, auf der Discourse läuft und gehostet wird, aber ich muss Skripte schreiben, diese auf einer Staging-Instanz testen und dann an die Produktion übergeben, damit sie ausgeführt werden können.
Wie wird das umgesetzt? Ich sehe Themen zu db:migrate usw., aber es ist unklar.
Könntest du mir bitte die richtige Richtung weisen?

Hier sind die Schritte, die ich durchführen möchte:

  1. Eine neue Kategorie erstellen.
  2. Alle Themen in bestehenden Kategorien mit einem Tag versehen, der denselben Namen wie die Kategorie hat.
  3. Alle Themen in die neue Kategorie verschieben.
  4. Alle alten Kategorien löschen.
  5. Tag-Gruppen aus diesen neu erstellten Tags erstellen.
  6. Diese Tag-Gruppen auf die neue Kategorie beschränken.
  7. Einige Kategorieeinstellungen für diese neue Kategorie bearbeiten.

Ich habe herausgefunden, wie ich das alles über die API erledige. Den Code dafür habe ich bereits geschrieben.
Ich frage mich nur, ob es effizienter wäre, dies mit Migrations durchzuführen?

Hmm, dafür benötigst du Console-Zugriff, um eines der Skripte/Aufgaben für Massenoperationen auszuführen. Bei unserem Hosting führen wir gerne einmalige Skripte/Aufgaben für Massenoperationen für Kunden aus. Wende dich also an deinen Hosting-Anbieter und frage, ob sie das für dich übernehmen können.

So würde ich meine Schritte angehen:

  1. Einfach über die Benutzeroberfläche (UI) erledigbar
  2. Alle Themen innerhalb einer Kategorie mit Tags versehen
  3. Alle Themen von einer Kategorie in eine andere verschieben
  4. Entweder über die UI oder rake destroy:categories[10,11,12,18,30]
  5. Wahrscheinlich am einfachsten über die UI
  6. UI
  7. UI

Es sollte keine Notwendigkeit geben, etwas mit db:migrate zu machen. Wenn dein Hosting-Anbieter die erforderlichen Aufgaben für Massenoperationen für dich ausführen kann, wäre das effizienter als die Nutzung der API.

Überprüfe zunächst, ob dein Hosting-Anbieter die Aufgabe ausführen wird, und entscheide dann, wie du weiter vorgehst.

Danke für die schnelle Rückmeldung.

Ja, es gibt tatsächlich Personen im Team, die Zugriff auf die Produktions-Hosting-Umgebung haben.
Könntest du mir bitte sagen, wo ich lernen kann, wie man diese Rake-Skripte schreibt und ausführt?

Alle benötigten Informationen sind in den oben verlinkten Beiträgen enthalten :slight_smile: Sie sind bereits verfasst; du musst lediglich die Parameter angeben, die in den entsprechenden Abschnitten des Themas Administrative Bulk Operations erklärt werden. Schau dir die Anweisungen ganz oben im Thema an.