From 89ffc01c23cf89dc88245eb95f035e0404a5fcbb Mon Sep 17 00:00:00 2001 From: floatingghost Date: Tue, 16 Aug 2022 23:24:19 +0000 Subject: [PATCH] only return create objects for ES search (#165) Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/165 --- CHANGELOG.md | 1 + lib/pleroma/search/elasticsearch.ex | 10 +++++++--- lib/pleroma/search/elasticsearch/store.ex | 1 - 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3618211e4..c1e1d01c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Compatibility with latest meilisearch - Resolution of nested mix tasks (i.e search.meilisearch) in OTP releases +- Elasticsearch returning likes and repeats, displaying as posts ### Removed - Non-finch HTTP adapters. `:tesla, :adapter` is now highly recommended to be set to the default. diff --git a/lib/pleroma/search/elasticsearch.ex b/lib/pleroma/search/elasticsearch.ex index 7c7ca82c8..16b01101a 100644 --- a/lib/pleroma/search/elasticsearch.ex +++ b/lib/pleroma/search/elasticsearch.ex @@ -23,7 +23,7 @@ def es_query(:activity, query, offset, limit) do timeout: "5s", sort: [ "_score", - %{_timestamp: %{order: "desc", format: "basic_date_time"}} + %{"_timestamp" => %{order: "desc", format: "basic_date_time"}} ], query: %{ bool: %{ @@ -62,8 +62,12 @@ def search(user, query, options) do Task.async(fn -> q = es_query(:activity, parsed_query, offset, limit) - Pleroma.Search.Elasticsearch.Store.search(:activities, q) - |> Enum.filter(fn x -> Visibility.visible_for_user?(x, user) end) + :activities + |> Pleroma.Search.Elasticsearch.Store.search(q) + |> Enum.filter(fn x -> + x.data["type"] == "Create" && x.object.data["type"] == "Note" && + Visibility.visible_for_user?(x, user) + end) end) activity_results = Task.await(activity_task) diff --git a/lib/pleroma/search/elasticsearch/store.ex b/lib/pleroma/search/elasticsearch/store.ex index 895b76d7f..3b7bbb838 100644 --- a/lib/pleroma/search/elasticsearch/store.ex +++ b/lib/pleroma/search/elasticsearch/store.ex @@ -42,7 +42,6 @@ def search(:activities, q) do results |> Enum.map(fn result -> result["_id"] end) |> Pleroma.Activity.all_by_ids_with_object() - |> Enum.sort(&(&1.inserted_at >= &2.inserted_at)) else e -> Logger.error(e)