diff options
author | Ekaterina Vaartis <vaartis@kotobank.ch> | 2021-08-15 21:53:04 +0300 |
---|---|---|
committer | Ekaterina Vaartis <vaartis@kotobank.ch> | 2022-10-10 20:19:08 +0300 |
commit | e154ebbf7933123e91d5b5c6f5070e78eb3e383b (patch) | |
tree | d68532c3b46bcb9ae4d2f6bef98805229139bdf0 /lib/mix/tasks | |
parent | 8042e0ebe1277519d446a7e2fbcf17629c1ffab2 (diff) | |
download | pleroma-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.ex | 38 |
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 |