Zuerst einmal ist dies eine Kopie meines Beitrags in Algolia-Discourse. Wie von Discourse-Support mitgeteilt, kann ich ihn jetzt hier posten, daher handelt es sich um eine Kopie-Nachricht.
Ich möchte unser Discourse mit Algolia einrichten, aber es funktioniert nicht wie auf GitHub beschrieben. Ich habe die neueste Version: 3.1.0.beta1.
Um die erste Initialisierung durchzuführen, öffne ich mein Discourse-Docker mit
./launcher enter app
Danach habe ich verschiedene Befehle ausprobiert (bundle exec rails oder nur rails, auch rake), aber alle führen zu:
root@rbx-communtity-service-app:/var/www/discourse# LOAD_PLUGINS=1 rails algolia:initialize
rails aborted!
Don't know how to build task 'algolia:initialize' (See the list of available tasks with `rails --tasks`)
Did you mean? algolia:reindex
Wenn ich nur algolia:reindex ausführe, erhalte ich Folgendes:
root@rbx-communtity-service-app:/var/www/discourse# LOAD_PLUGINS=1 rake algolia:reindex
Clearing users from Algolia
Pushing users to Algolia
..
Successfully pushed xxx users to Algolia
Clearing tags from Algolia
Pushing tags to Algolia
..
Successfully pushed xxx tags to Algolia
Clearing posts from Algolia
Pushing posts to Algolia
rake aborted!
NoMethodError: undefined method `id' for nil:NilClass
/var/www/discourse/plugins/discourse-algolia/lib/discourse_algolia/post_indexer.rb:66:in `to_object'
/var/www/discourse/plugins/discourse-algolia/lib/discourse_algolia/indexer.rb:23:in `block in process!'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:71:in `each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:71:in `block in find_each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:138:in `block in find_in_batches'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:245:in `block in in_batches'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:229:in `loop'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:229:in `in_batches'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:137:in `find_in_batches'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:70:in `find_each'
/var/www/discourse/plugins/discourse-algolia/lib/discourse_algolia/indexer.rb:21:in `process!'
/var/www/discourse/plugins/discourse-algolia/lib/tasks/discourse_algolia.rake:36:in `block in algolia_reindex'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:245:in `block in in_batches'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:229:in `loop'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:229:in `in_batches'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/querying.rb:22:in `in_batches'
/var/www/discourse/plugins/discourse-algolia/lib/tasks/discourse_algolia.rake:33:in `algolia_reindex'
/var/www/discourse/plugins/discourse-algolia/lib/tasks/discourse_algolia.rake:7:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/cli/exec.rb:58:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/cli/exec.rb:58:in `kernel_load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/cli/exec.rb:23:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/cli.rb:491:in `exec'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/cli.rb:34:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/cli.rb:28:in `start'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/exe/bundle:45:in `block in <top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/exe/bundle:33:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => algolia:reindex
(See full trace by running task with --trace)
Ich habe dies auf meiner Testseite installiert, um sie auszuprobieren, und ich sehe auch etwas Ähnliches. Lassen Sie mich sehen, was ich herausfinden kann.
Das Problem bezüglich des Reindexierens besteht weiterhin. Ich habe ein vollständiges Upgrade von Discourse durchgeführt, einschließlich Algolia. Außerdem konnte ich bisher keine Code-Änderung im Algolia-Plugin finden. Gibt es Pläne, daran zu arbeiten?
Derzeit ist nur die Readme geändert, aber die Funktion funktioniert immer noch nicht wie ursprünglich von mir geschrieben.
Bei Bedarf kann ich Ihnen frische Protokolle von der Konsole zusenden.
Ich hatte überoptimistisch auf eine „magische Lösung“ gehofft
Ich habe es auf meiner Testseite noch einmal versucht und bin wieder auf dasselbe Problem gestoßen. Ich konnte jedoch weitere Informationen herausfinden. Anscheinend haben wir beide ein Problem, bei dem wir mindestens einen verwaisten Beitrag haben, dem eine Topic-ID fehlt, was die Rake-Aufgabe durcheinanderbringt. Der Rat ist, diese zu finden und zu löschen, und dann kann die Rake-Neuindizierung reibungslos laufen.
Ich habe dies noch nicht zur Praxis gemacht, um den/die problematischen Beitrag/Beiträge zu finden, daher habe ich noch keine Schritt-für-Schritt-Anleitung, aber ich wollte Sie informieren, falls Sie dies untersuchen möchten, bevor ich dazu komme.
Haben Sie die Standard-Website-Einstellung algolia_discourse_username geändert? Wenn ja, stellen Sie bitte sicher, dass Sie einen Nicht-Admin-Benutzer verwenden.
Ich habe es noch einmal versucht… Und ich kann bestätigen, dass das Entfernen von ‘system’ aus der Einstellung algolia discourse username und das Ausführen von rake algolia:reindex mit einem Dummy-Benutzer stattdessen ohne Fehler funktionierte.
Ich habe den Teil in den Anweisungen leider nicht bemerkt über:
Es wird empfohlen, einen separaten Dummy-Benutzer zu erstellen, der nur Inhalte sehen kann, die Sie als öffentlich betrachten, und diesen Wert auf dessen Benutzernamen zu ändern.
Und habe meine Einstellungen nur gemäß dieser Anweisung abgeglichen:
Sobald alle Einstellungen aktiviert und ausgefüllt sind, sollte die Plugin-Konfiguration wie folgt aussehen:
Persönlich (und ich bin vielleicht voreingenommen ) denke ich, wir könnten diese Anweisungen vielleicht etwas klarer gestalten. Ich würde einen Abschnitt ‘Erstellen Sie Ihren Algolia Discourse-Benutzer’ als Teil des Konfigurationsflusses befürworten.
Tatsächlich habe ich diese Option im letzten PR entfernt, da sie möglicherweise gefährlich ist. Wenn ein Benutzer mit Administratorzugriff verwendet wird, können eingeschränkte Beiträge in der Suche angezeigt werden.