Es ist das Monorepo -Repository:
Die Idee ist, einen InstantSearch -Adapter für PageFind zu erstellen und dieselbe Demo -Site zu erstellen wie für Facetten. Auf diese Weise können wir "Äpfel mit Äpfeln" vergleichen.
Dazu wollte ich das gleiche Schema wie in Facetten verwenden:
Ich begann mit hartcodierter Konvertierung mit der Implementierung. Ich habe es geschafft, eine funktionierende Demo zu erstellen. Ich erkannte jedoch, dass PageFind nicht als allgemeine Suchmaschine mit Facetten verwendet werden kann.
PageFind unterstützt nur Zeichenfolgewerte, sodass alle Werte vor Indexierung in Zeichenfolgen konvertiert werden müssen, und zurück zum Anfangstyp auf der Clientseite.
Indizierung:
brand : [ item . brand ] ,
categories : item . categories ,
price : [ ` ${ item . price } ` ] ,
rating : [ ` ${ item . rating } ` ] ,
free_shipping : [ ` ${ item . free_shipping } ` ] ,Client-Seite:
{
objectID : item . id ,
... data . meta ,
categories : data . filters . categories ,
price : parseFloat ( data . filters . price [ 0 ] ) ,
rating : parseFloat ( data . filters . rating [ 0 ] ) ,
}Sehen:
Da es keine Unterstützung für Zahlen gibt, um Statistiken zu erhalten, müssen wir Strings in Zahlen auf der Clientseite umwandeln und Statistiken berechnen:
if ( schema [ field ] ?. type === "number" ) {
const values : number [ ] = [ ] ;
entries . forEach ( ( a ) => values . push ( parseFloat ( a [ 0 ] ) ) ) ;
facetsStats [ field ] = {
min : Math . min ( ... values ) ,
max : Math . max ( ... values ) ,
} ;
} Ich habe keinen Filter für numerische Felder wie price >= 40 AND price <= 100 implementiert. Der Preis -Slider funktioniert im Deme nicht
Nachdem mir klar wurde, dass es nicht praktisch war, eine allgemeine facettierte Suchmaschine zu verwenden, gab ich auf und beendete den Code für die Schema -Transformation nicht.
Dieser Code wird nicht für die Verwendung von Produkten empfohlen .
pnpm i
pnpm run devfacets verwenden