pagefind instantsearch
1.0.0
它是monorepo存儲庫:
這個想法是為PageFind創建IntantantSearch適配器,並與我為Facets構建相同的演示站點。這樣,我們可以將“蘋果與蘋果”進行比較。
為此,我想使用與方面相同的架構:
我開始使用硬編碼轉換實施。我設法創建了一個工作的演示。但是,我意識到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相同的模式