Ich habe es mit einer Immobilien-App zu tun. Ein Haus wird typische Eigenschaften wie Preis, Bett Zimmer, Bad Zimmer, SqFt, Los Größe etc. Benutzer wird nach Homes suchen und eine solche Abfrage erfordert mehrere Ungleichheitsfilter wie: Preis zwischen x und y, Räume größer als z, Badezimmer mehr als p ... usw.Google Datastore - Search Optimization Technique
Ich weiß, dass mehrere Ungleichheitsfilter nicht erlaubt sind. Ich möchte auch keine Filterung in meinem Code durchführen und/weil ich Cursor verwenden möchte.
so habe ich zwei Lösungen gefunden. Ich bin mir nicht sicher, ob diese richtig sind - also wundern Sie sich, wenn Gurus etwas Licht abwerfen können
Lösung 1: Ich werde die Werte jedes Attributs diskretisieren und sie in einem Listenfeld speichern, dann verwenden Sie IN. Zum Beispiel: Wenn es 3 Schlafzimmer gibt, anstatt Betten = 3 zu lagern, werde ich Betten = [1,2,3] lagern. Wenn ein Benutzer nun nach Häusern mit mindestens zwei Schlafzimmern sucht, dann schreibe ich den Filter nicht als Betten> 2, sondern schreibe den Filter als "Betten IN [2]" - und mein Zuhause über [1,2,3] wird qualifizieren - so wird auch jedes Haus mit 2 Betten [1,2] oder 4 Betten [1,2,3,4] und so weiter
Lösung 2: Es ist ähnlich dem ersten, aber anstatt eine zu erstellen list-property, ich werde dem Haus tatsächlich attributierte (Spalten) hinzufügen. So ein Haus mit 3 Schlafzimmern wird die folgenden zugeschrieben/Spalten/Eigenschaften: Col-Bed-1: True, Col-Bett-2: True, Col-Bed-3: True. Wenn nun ein Benutzer nach Häusern mit mindestens zwei Schlafzimmern sucht, dann schreibe ich den Filter nicht als Betten> 2, sondern schreibe den Filter als "col-bed-2 = true" - und mein Zuhause wird sich qualifizieren - so wird es auch sein Haus mit 2 Betten, 3 Betten, 4 Betten und so weiter
ich weiß, dass beide Lösungen funktionieren wird, aber ich möchte wissen: 1. Welche besser ist sowohl von einer Leistung und google Preis Perspektive 2. gibt es eine bessere Lösung, dies zu tun?
Dies funktioniert nicht für den Preis, es sei denn, Sie begrenzen die Genauigkeit (sagen Sie alle $ 50, die Sie diskretisieren) –