Ini adalah repositori monorepo:
Idenya adalah untuk membuat adaptor instantsearch untuk pagefind dan membangun situs demo yang sama seperti yang saya lakukan untuk segi. Dengan cara ini kita dapat membandingkan "apel dengan apel".
Untuk melakukannya saya ingin menggunakan skema yang sama seperti pada aspek :
Saya memulai implementasi dengan konversi hardcoded. Saya berhasil membuat demo yang berfungsi. Namun, saya menyadari bahwa Pagefind tidak dapat digunakan sebagai mesin pencari faceted umum.
Pagefind hanya mendukung nilai string, sehingga semua nilai perlu dikonversi ke string sebelum pengindeksan dan kembali ke tipe awal di sisi klien.
Pengindeksan:
brand : [ item . brand ] ,
categories : item . categories ,
price : [ ` ${ item . price } ` ] ,
rating : [ ` ${ item . rating } ` ] ,
free_shipping : [ ` ${ item . free_shipping } ` ] ,Sisi klien:
{
objectID : item . id ,
... data . meta ,
categories : data . filters . categories ,
price : parseFloat ( data . filters . price [ 0 ] ) ,
rating : parseFloat ( data . filters . rating [ 0 ] ) ,
}Melihat:
Karena tidak ada dukungan untuk angka untuk mendapatkan statistik, kita perlu mengonversi string ke angka di sisi klien dan menghitung statistik:
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 ) ,
} ;
} Saya tidak menerapkan filter untuk bidang numerik, seperti price >= 40 AND price <= 100 . Slider harga tidak berfungsi di deme
Setelah saya menyadari bahwa tidak praktis untuk menggunakan mesin pencari faceted umum yang saya berikan dan tidak menyelesaikan kode untuk transformasi skema.
Kode ini tidak direkomendasikan untuk digunakan penghasilan .
pnpm i
pnpm run devfacets