summaryrefslogtreecommitdiff
path: root/lib/mix/tasks
diff options
context:
space:
mode:
authorEkaterina Vaartis <vaartis@kotobank.ch>2021-08-15 21:53:04 +0300
committerEkaterina Vaartis <vaartis@kotobank.ch>2022-10-10 20:19:08 +0300
commite154ebbf7933123e91d5b5c6f5070e78eb3e383b (patch)
treed68532c3b46bcb9ae4d2f6bef98805229139bdf0 /lib/mix/tasks
parent8042e0ebe1277519d446a7e2fbcf17629c1ffab2 (diff)
downloadpleroma-e154ebbf7933123e91d5b5c6f5070e78eb3e383b.tar.gz
pleroma-e154ebbf7933123e91d5b5c6f5070e78eb3e383b.zip
Initial meilisearch implementation, doesn't delete posts yet
Diffstat (limited to 'lib/mix/tasks')
-rw-r--r--lib/mix/tasks/pleroma/search/meilisearch.ex38
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/mix/tasks/pleroma/search/meilisearch.ex b/lib/mix/tasks/pleroma/search/meilisearch.ex
new file mode 100644
index 000000000..2af8e5853
--- /dev/null
+++ b/lib/mix/tasks/pleroma/search/meilisearch.ex
@@ -0,0 +1,38 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Mix.Tasks.Pleroma.Search.Meilisearch do
+ import Mix.Pleroma
+
+ import Ecto.Query
+
+ def run(["index"]) do
+ start_pleroma()
+
+ endpoint = Pleroma.Config.get([Pleroma.Search.Meilisearch, :url])
+
+ Pleroma.Repo.chunk_stream(
+ from(Pleroma.Object,
+ limit: 200,
+ where: fragment("data->>'type' = 'Note'") and fragment("LENGTH(data->>'source') > 0")
+ ),
+ 100,
+ :batches
+ )
+ |> Stream.map(fn objects ->
+ Enum.map(objects, fn object ->
+ data = object.data
+ %{id: object.id, source: data["source"], ap: data["id"]}
+ end)
+ end)
+ |> Stream.each(fn activities ->
+ {:ok, _} =
+ Pleroma.HTTP.post(
+ "#{endpoint}/indexes/objects/documents",
+ Jason.encode!(activities)
+ )
+ end)
+ |> Stream.run()
+ end
+end