ActiveRecord Query lub SQL. (baza Postgres)

Witam,
Potrzbuję pomocy (odpłatnej) w napisaniu ActiveRecord Query lub ewentualnie SQLa. (baza Postgres)

W zależności od parametrów wjściowych w zapytaniu będzie powiązanych 6-8 tabel.

Zapytanie powinno wybrać karty (ze zbioru kilkadziesiąt tysięcy) w zależności od parametrów wejsciowych takich jak odległosć, punt na mapie (long, lat), słów kluczowych a potem zgodnie z wyborem posortowane po:

  1. Odległości od danego punktu określonego przez long, lat i odległość (powiązany model adres ma long, lat, może miec też odległość)
  2. Oceny (powiązany model grade karta może mieć 0-N ocen)
  3. Daty ostatniego zalogowania właściela (karta ma albo nie ma właściela, powiązany model user)
  4. Trafności znalezienia słów kluczowych (1-3) podanych jako parametr wejściowy w polach tekstowych tabel powiązanych z tabelą kart (np. w tagach, nazwie użytkownika, itp). Im w większej ilości pól znajdziemy słowa kluczowe i im więcej tych słów znajdziemy tym karta ma lepszą pozycję.

Chciałbym to zrobć jednym zapytaniem, ale być może ktoś zna inne lepsze rowiązanie.

Proszę pisać na priv. Doślę więcej danych.

Pozdrawiam.

Ja bym to wrzucil w ElasticSearch. Duzo bardziej sie nadaje do tego co piszesz