pagefind instantsearch
1.0.0
それはモノレポリポジトリです:
アイデアは、PageFind用のInstantSearchアダプターを作成し、ファセットと同じデモサイトを構築することです。これにより、「リンゴとリンゴ」を比較できます。
そうするために、私はファセットと同じスキーマを使用したかった:
ハードコード化された変換で実装を開始しました。作業デモを作成することができました。しかし、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と同じスキーマを使用できます