49 lines
		
	
	
	
		
			879 B
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			879 B
		
	
	
	
		
			Elixir
		
	
	
	
	
	
| # Akkoma: A lightweight social networking server
 | |
| # Copyright © 2022-2022 Akkoma Authors <https://git.ihatebeinga.live/IHBAGang/akkoma/>
 | |
| # SPDX-License-Identifier: AGPL-3.0-only
 | |
| 
 | |
| defmodule Pleroma.Search.Elasticsearch.Parsers.Activity do
 | |
|   defp to_es(term) when is_binary(term) do
 | |
|     %{
 | |
|       match: %{
 | |
|         content: %{
 | |
|           query: term,
 | |
|           operator: "AND"
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   end
 | |
| 
 | |
|   defp to_es({:quoted, term}), do: to_es(term)
 | |
| 
 | |
|   defp to_es({:filter, ["hashtag", query]}) do
 | |
|     %{
 | |
|       term: %{
 | |
|         hashtags: %{
 | |
|           value: query
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   end
 | |
| 
 | |
|   defp to_es({:filter, [field, query]}) do
 | |
|     %{
 | |
|       term: %{
 | |
|         field => %{
 | |
|           value: query
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   end
 | |
| 
 | |
|   def parse(q) do
 | |
|     [
 | |
|       %{
 | |
|         exists: %{
 | |
|           field: "content"
 | |
|         }
 | |
|       }
 | |
|     ] ++
 | |
|       Enum.map(q, &to_es/1)
 | |
|   end
 | |
| end
 | 
