Gibt es eine Möglichkeit, eine vollständige Liste der Suchanfragen für einen bestimmten Datumsbereich zu erhalten, anstatt nur die Top 100?
Ich glaube, das könnte ein Kandidat für eine Data Explorer-Abfrage sein. Ich müsste ein wenig stöbern, um die genaue Abfrage zu erstellen, aber ich denke, die Daten befinden sich in der Tabelle search_logs.
Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen. ![]()
Ich kenne SQL nicht, aber hier ist, was ChatGPT mir gesagt hat, als ich fragte, wie ich Suchprotokolle für die letzten 3 Monate abfragen kann. Würde das funktionieren (ich habe keinen Admin-Zugriff, um es auszuprobieren, aber ich hätte gerne eine solide Abfrage, die ich an meinen Admin weitergeben kann).
Um alle Suchprotokolldaten der letzten 3 Monate mit dem Discourse Data Explorer abzurufen, können Sie eine neue Abfrage mit dem folgenden Code erstellen:
-- [params]
-- date :datetime
SELECT
action_logs.id AS action_log_id,
action_logs.created_at AS action_log_date,
action_logs.action AS action_type,
users.id AS user_id,
users.username AS user_username,
users.email AS user_email,
user_actions.details AS search_query
FROM
action_logs
JOIN
user_actions ON user_actions.id = action_logs.action_id
JOIN
users ON user_actions.user_id = users.id
WHERE
action_logs.action = 'searched'
AND action_logs.created_at >= :date - INTERVAL '3 months'
ORDER BY
action_logs.created_at DESC;
In dieser Abfrage verwenden wir die Syntax -- [params], um einen Parameter namens date vom Typ datetime zu definieren. Dieser Parameter ermöglicht es Ihnen, das Datum anzugeben, für das Sie die Suchprotokolldaten abrufen möchten. Die Abfrage verwendet dann diesen Parameter, um die Suchprotokolle für die letzten 3 Monate ab dem angegebenen Datum zu filtern.
Um diese Abfrage im Discourse Data Explorer zu verwenden, gehen Sie wie folgt vor:
- Rufen Sie das Admin-Dashboard Ihrer Discourse-Site auf.
- Klicken Sie im linken Menü auf „Data Explorer“.
- Klicken Sie auf „New Query“, um eine neue Abfrage zu erstellen.
- Geben Sie Ihrer Abfrage bei Bedarf einen Namen und eine Beschreibung.
- Kopieren Sie den obigen SQL-Code und fügen Sie ihn in das Textfeld „Query“ ein.
- Klicken Sie auf die Schaltfläche „Save“, um die Abfrage zu speichern.
Nach dem Speichern können Sie die Abfrage ausführen, indem Sie auf ihren Namen im Data Explorer klicken. Ein Popup wird angezeigt, in dem Sie aufgefordert werden, den Parameterwert für date einzugeben. Geben Sie ein Datum im Format JJJJ-MM-TT (z. B. 2023-07-28) ein und klicken Sie auf „Run Query“.
Die Abfrage ruft alle Suchprotokolldaten der letzten 3 Monate ab dem angegebenen Datum ab, und die Ergebnisse werden in Tabellenform angezeigt.
Ich glaube nicht, dass das richtig ist. Ich glaube nicht, dass wir eine action_logs-Tabelle haben. ![]()
Ich schaue mal, was ich zusammenstellen kann.
![]()
Ich denke, etwas wie das hier sollte besser passen:
-- [params]
-- date :start_date
-- date :end_date
WITH results AS (
SELECT LOWER(term) AS term,
COUNT(*) AS searches,
SUM(CASE WHEN search_result_id IS NOT NULL THEN 1 ELSE 0 END) AS click_through
FROM search_logs
WHERE created_at BETWEEN :start_date AND :end_date
GROUP BY term
)
SELECT term AS "Suchbegriff",
searches AS "Suchen",
click_through AS "Klicks",
CEIL ((click_through/searches::float) * 100) || '%' AS "CTR"
FROM results
ORDER BY searches DESC
Hoffentlich hilft das, aber lassen Sie es mich wissen, wenn Sie Änderungen wünschen. ![]()
Das ist großartig, danke! Ich werde es an meinen Administrator weitergeben ![]()
Wir haben diese Abfrage ausgeführt und sie hat perfekt funktioniert, nochmals vielen Dank!