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相同的模式