2016-07-26 16 views
1

Ich kann keine Dokumentation über die Implementierung von Suche nach Farbe mit Algolia finden. Ich habe ungefähr 5k Bilder. Ich möchte, dass der Benutzer in der Lage ist, eine beliebige RGB-Farbe auszuwählen, und die Ergebnisse mit Farben gefüllt werden, die eng mit der gewählten Farbe zusammenhängen. Hat jemand so etwas erfolgreich umgesetzt?Suche nach Farbe (RGB, LSV, etc). Hat jemand das implementiert?

Antwort

4

Wenn Sie RGB- (oder LSV-) Werte für jedes Bild haben, kann dies mit filters implementiert werden.

Angenommen, Sie haben einen Schieberegler oder eine Farbauswahl, mit der der Benutzer einen bestimmten RGB-Wert auswählen kann. Die Idee ist nun, als Ergebnis alle Farben zu geben, die zu der Kugel des Zentrums <RGB chosen by user> und Radius <pick a constant> gehören. Dazu müssen Sie den Filteranforderungsparameter mit diesem vom Benutzer gewählten Wert und dieser Konstante erstellen, die Sie beim Schreiben Ihrer Anwendung ausgewählt haben.

Mit einem konkreten Beispiel:

  • Der Benutzer nimmt den Wert {R: 128, G: 15, B:200}

  • wählten Sie die Konstante 10

  • Sie indizierte Datensätze enthält die Felder r, g und b.

Sie dann den folgenden Filter aus diesen Werten "r:118 TO 138 AND g:5 TO 25 AND b:190 TO 210" bauen.
Sie können dann eine Suchanforderung mit diesem Filter als filters Parameter erstellen.

Beachten Sie, dass ich hier RGB für das Beispiel verwende. Während RGB in den meisten Fällen in Ordnung sein sollte, können Sie sich immer an CIE LAB drehen, zum Beispiel entworfen, um Farbe zu schließen zahlenmäßig auch nach der menschlichen Augen Wahrnehmung.

+0

Danke Léo für das sehr detaillierte Beispiel. Jedes Bild weist 5 entsprechende RGB-Werte auf, die von den meisten hervorstechenden zu den wenigsten hervorstechenden im Bild gehen. Müssten 5 verschiedene Abfragen ausgeführt werden, um diese Suche durchzuführen oder gibt es eine Art, die wir für die gefilterten Ergebnisse verwenden könnten? Oder gibt es einen anderen Weg, dies zu erreichen? Die Matches der prominentesten Bilder sollten natürlich vor den Matches der am wenigsten prominenten Farben gezeigt werden. –

+0

Leider ja. Der Grund liegt jedoch in der Art und Weise, wie Filter von der Maschine gehandhabt werden. Laut Dokumentation: Es ist nicht möglich, 'FILTER1 OR (FILTER2 UND FILTER3)' (aus Leistungsgründen) zu haben. Dies schließt das Schreiben eines Filters aus, der Objekte abruft, die einen * beliebigen * RGB-Wert erfüllen. Sie müssen 5 Abfragen durchführen, Duplikate zwischen Abfragen entfernen und das Ergebnis der Abfragen an das gewünschte Ranking anhängen. –

+0

@ LéoErcolanelli ist richtig, der Weg ist die Verwendung von Filtern und LAB ist besser für diese Bereich Abfragen. Hier ist ein Live-Beispiel: https://www.typographyposters.com/posters?r=185&g=129&b=181 –