pagefind instantsearch
1.0.0
그것은 Monorepo 저장소입니다.
아이디어는 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 과 동일한 스키마를 사용할 수 있습니다