Page MenuHomePhorge

No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None
diff --git a/lib/mix/tasks/pleroma/search/indexer.ex b/lib/mix/tasks/pleroma/search/indexer.ex
index 2704ab9f1..744cac15a 100644
--- a/lib/mix/tasks/pleroma/search/indexer.ex
+++ b/lib/mix/tasks/pleroma/search/indexer.ex
@@ -1,57 +1,64 @@
# 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.Indexer do
import Mix.Pleroma
import Ecto.Query
alias Pleroma.Workers.SearchIndexingWorker
def run(["index" | options]) do
{options, [], []} =
OptionParser.parse(
options,
strict: [
limit: :integer
]
)
start_pleroma()
limit = Keyword.get(options, :limit, 100_000)
- q =
- from(a in Pleroma.Activity,
- limit: ^limit,
- select: [:id],
- order_by: [desc: :id]
- )
+ per_step = 1000
+ chunks = max(div(limit, per_step), 1)
+
+ 1..chunks
+ |> Enum.each(fn step ->
+ q =
+ from(a in Pleroma.Activity,
+ limit: ^per_step,
+ offset: ^per_step * (^step - 1),
+ select: [:id],
+ order_by: [desc: :id]
+ )
- {:ok, ids} =
- Pleroma.Repo.transaction(fn ->
- Pleroma.Repo.stream(q, timeout: :infinity)
- |> Enum.map(fn a ->
- a.id
+ {:ok, ids} =
+ Pleroma.Repo.transaction(fn ->
+ Pleroma.Repo.stream(q, timeout: :infinity)
+ |> Enum.map(fn a ->
+ a.id
+ end)
end)
- end)
- IO.puts("Got #{length(ids)} activities, adding to indexer")
+ IO.puts("Got #{length(ids)} activities, adding to indexer")
- ids
- |> Enum.chunk_every(100)
- |> Enum.each(fn chunk ->
- IO.puts("Adding #{length(chunk)} activities to indexing queue")
+ ids
+ |> Enum.chunk_every(100)
+ |> Enum.each(fn chunk ->
+ IO.puts("Adding #{length(chunk)} activities to indexing queue")
- chunk
- |> Enum.map(fn id ->
- SearchIndexingWorker.new(%{"op" => "add_to_index", "activity" => id})
+ chunk
+ |> Enum.map(fn id ->
+ SearchIndexingWorker.new(%{"op" => "add_to_index", "activity" => id})
+ end)
+ |> Oban.insert_all()
end)
- |> Oban.insert_all()
end)
# |> Stream.each(fn activity ->
# Pleroma.Search.add_to_index(activity)
# end)
end
end

File Metadata

Mime Type
text/x-diff
Expires
Sat, Jul 18, 6:20 PM (1 d, 2 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1695111
Default Alt Text
(2 KB)

Event Timeline