Was ist der beste Weg, um eine facettierte Suche/Filter UI mit Postgres als Backend und Ruby on Rails als Frontend zu implementieren? Beispiel hierfür ist unter:Facettierte Filterung mit Postgres & Rails
Antwort
Verwenden Sie ThinkingSphinx oder Apache Solr - beide haben eine integrierte Facettierung. Sie können Ihre eigenen rollen (wie in einer anderen feinen Antwort gezeigt), aber meine Erfahrung sagt, dass Sie lieber eine echte Suchmaschine hinzufügen und die Facettierungsfunktion dort sowie die anderen Suchfunktionen nutzen. Ich benutze Solr für alle Neuentwicklungen, aber ThinkingSphinx ist im Allgemeinen ein wenig einfacher einzurichten und es hat neue Funktionen (hauptsächlich die kontinuierliche Indexierung), die es zu einem guten Anwärter machen.
Ich habe ElasticSearch für ein anderes Projekt verwendet und es war großartig dafür, aber ich habe nicht die gleichen Ressourcen dafür, also muss es direkt in der Datenbank oder mit Rails machbar sein. – Avishai
Ich stimme Michael zu, diese Lösung ist viel sauberer. Allerdings, wenn Sie eine kleine App mit ein paar Datensätze laufen, ist es ein wenig übertrieben imo – basgys
Ich denke, Rails stark genug ist, einfache Form Filter zu implementieren, wie oben gezeigt.
Sie müssen nur ein gutes Datenmodell haben und dann wird es einfach sein.
Beispiel:
die Formularerstellung zu vereinfachen, obwohl Sie simple_form verwenden können, aber es ist auf jeden Fall optional.
Dies ist ein großartiges Beispiel. Wie bekomme ich die Anzahl der Facettenergebnisse von Postgres, wie Farbe: {Blau: 50, Rot: 25, Schwarz: 182}, Größe: {Kompakt: 75, Mittel: 122}, etc.? – Avishai
Sie können eine Auswahl aus Farbe treffen, Autos beitreten und dann nach Farbe gruppieren. Dasselbe gilt für die Größen. – basgys
select
(
select json_object_agg(COALESCE(brand_id, 'null'), cnt)
from (
select brand_id, COUNT(*) as cnt
from unnest(array_agg(brand_id)) as tmp(brand_id)
group by brand_id
) ttt
),
min(price) as price_min,
max(price) as price_max
from product
WHERE is_visible = true
Beachten Sie, dass, während die SQL gut aussieht, ich glaube nicht, dass dies die ursprüngliche Frage beantwortet, die war: "Wie dies über die Benutzeroberfläche zu erreichen gegeben a Postgres-Back-End und RoR-Frontend ". Ich denke, eine vollständigere Antwort würde beinhalten: "rufe einen paginierten API-Endpunkt auf, der eine Abfrage ähnlich der in der Antwort ausführt". – MSC
- 1. Rails: Multiselect-Filterung mit einer leeren Option
- 2. Hashtag-Filterung mit Ruby on Rails
- 3. Rails Postgres Funktionsindizes
- 4. Rails/Postgres Lookup Performance
- 5. MongoDB facettierte Suche
- 6. Facettierte Projekt Eclipse-Umgebung
- 7. Solr facettierte Suche Leistungsempfehlungen
- 8. elasticsearch facettierte Navigation
- 9. Einrichten von travis.ci mit Rails und Postgres
- 10. Worttrennzeichen für Postgres-Volltextsuche mit Rails
- 11. Postgres Rails Distinct Wählen Sie mit Bestell
- 12. Abfrage Rails Postgres mit Array-Datentyp
- 13. Rails 4 Postgres Abfrage Fehler
- 14. Rails Postgres Migration ohne Ausfallzeiten
- 15. Filterung nach Datum Teil in Rails
- 16. Fehler mit Rails Testdatenbank mit Postgres mit hstore
- 17. Postgres Ausgabe - Ruby on Rails (Postgres) auf Google Container Engine
- 18. Rails add_column mit einem Limit und Standard mit Postgres-Funktion
- 19. Rails Postgres Reconnection auf Failover für RDS
- 20. Postgres Multiple Schema-Datenbank in Rails verwenden
- 21. Postgres Art vs. Ruby on Rails Sortieren
- 22. Postgres on Rails FATAL: Datenbank existiert nicht
- 23. Filterung mit Suchindex
- 24. Filterung mit P6SPY
- 25. inverse Filterung mit Python
- 26. Dynamische Filterung mit D3
- 27. XML mit Filterung Parsen
- 28. Postgres - Berechnung wird als Zeichenfolge in Rails
- 29. Rails Postgres Schema Referenzen Rollback-Problem
- 30. Benutzerdefinierte Rails-Validierung für Postgres-JSON-Felder
Werfen Sie einen Blick auf das Juwel 'pg_search'. https://github.com/Casecommons/pg_search – lcguida