มันเป็นที่เก็บ monorepo:
แนวคิดคือการสร้างอะแดปเตอร์ Instantsearch สำหรับ PageFind และสร้างเว็บไซต์สาธิตเดียวกับที่ฉันทำเพื่อแง่มุม วิธีนี้เราสามารถเปรียบเทียบ "แอปเปิ้ลกับแอปเปิ้ล"
ในการทำเช่นนั้นฉันต้องการใช้สคีมาเดียวกันกับใน แง่มุม :
ฉันเริ่มดำเนินการด้วยการแปลงแบบฮาร์ดโค้ด ฉันจัดการเพื่อสร้างตัวอย่างที่ใช้งานได้ อย่างไรก็ตามฉันรู้ว่า PageFind ไม่สามารถใช้เป็นเครื่องมือค้นหาทั่วไปได้
PageFind รองรับค่าสตริงเท่านั้นดังนั้นค่าทั้งหมดจะต้องถูกแปลงเป็นสตริงก่อนการจัดทำดัชนีและกลับไปเป็นประเภทเริ่มต้นที่ฝั่งไคลเอ็นต์
การจัดทำดัชนี:
brand : [ item . brand ] ,
categories : item . categories ,
price : [ ` ${ item . price } ` ] ,
rating : [ ` ${ item . rating } ` ] ,
free_shipping : [ ` ${ item . free_shipping } ` ] ,ฝั่งไคลเอ็นต์:
{
objectID : item . id ,
... data . meta ,
categories : data . filters . categories ,
price : parseFloat ( data . filters . price [ 0 ] ) ,
rating : parseFloat ( data . filters . rating [ 0 ] ) ,
}ดู:
เนื่องจากไม่มีการสนับสนุนสำหรับตัวเลขที่จะได้รับสถิติเราจำเป็นต้องแปลงสตริงเป็นตัวเลขทางด้านไคลเอนต์และคำนวณสถิติ:
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 ) ,
} ;
} ฉันไม่ได้ใช้ตัวกรองสำหรับฟิลด์ตัวเลขเช่น price >= 40 AND price <= 100 ตัวเลื่อนราคาไม่ทำงานใน deme
หลังจากที่ฉันรู้ว่ามันไม่สามารถใช้เครื่องมือค้นหาทั่วไปที่ฉันยอมแพ้และไม่จบรหัสสำหรับการแปลงสคีมา
รหัสนี้ไม่ได้รับการแนะนำเพื่อใช้ในการใช้งาน
pnpm i
pnpm run devfacets