기능 스포트라이트: 선택적 필터
7714 단어 searchjavascript
몇 가지 흥미로운 사용 사례:
필터 및 패싯 필터를 사용하여 쿼리 시 결과 집합의 레코드 수를 줄인 다음 선택적 필터를 사용하여 나머지 레코드의 순위를 조작할 수 있습니다. 레코드 순서를 추가로 제어하기 위해 적용filter scoring할 수도 있습니다.
다음은
product_type
및 price_range
에 대한 패싯 필터를 Shopify 스토어의 인덱스에 적용하는 예입니다. 이 코드는 승격할 두 레코드objectID
를 선택한 다음 선택적 필터로 쿼리에 삽입합니다. 이러한 제품 중 하나가 쿼리의 다른 기준과 일치하는 결과 집합의 일부인 경우 해당 제품이 순위 맨 위로 푸시됩니다. 이 코드는 필터 점수를 사용하여 featuredProduct
가 항상 alternateProduct
위에 표시되도록 합니다.import algoliasearch from 'algoliasearch';
const featuredProduct = '41469303161004';
const alternateProduct = '41469346644140';
const client = algoliasearch('H2M6B61JEG', 'b1bdfc3258823bb4468815a664dce649');
// Standard replica
const index = client.initIndex('shopify_algolia_products_price_asc_standard');
// with params
index.search(query, {
facetFilters: [[
"product_type:HardGood",
"price_range:75:100"
]],
optionalFilters: [[
`objectID:${featuredProduct}<score=500>`,
`objectID:${alternateProduct}<score=200>`
]],
hitsPerPage: 50,
}).then(({ hits }) => {
console.log(hits.map(item => `- ${item.title} | ${item.product_type} | ${item.objectID} | ${item.price_range}`).join('\n'));
});
이 코드는 가격별로 정렬된 Shopify 인덱스의 표준 복제본을 사용합니다. 선택적 필터는 Virtual Replica 인덱스와 잘 작동하지 않습니다. 둘 다 쿼리 시간에 레코드의 순위를 재지정하여 예측할 수 없는 결과를 초래하기 때문입니다. 선택적 필터를 사용하려는 경우 인덱스 시간에 순위를 적용하는 표준 복제본을 사용해야 합니다.
또한 부정적인 선택적 필터를 사용하여 레코드를 순위 아래로 푸시할 수 있습니다. 예를 들어, 현재 사용자가 작성한 게시물을 순위에서 더 낮게 푸시하지만 완전히 제거하지는 않으려는 경우:
index.search('', {
filters: `date_timestamp > ${Math.floor(d.setDate(d.getDate() - 7) / 1000)}`,
optionalFilters: [
`author:-${user.name}`
],
hitsPerPage: 50,
}).then(({ hits }) => {
console.log(hits};
});
선택적 필터는 순위 도구 벨트에 추가할 수 있는 강력한 도구이지만 모든 쿼리 시간 계산은 검색 성능에 영향을 미친다는 점을 기억하십시오. 예를 들어 100,000개 이상의 결과를 반환할 수 있는 검색에 필터 점수를 사용하면 안 됩니다. 가능하면 항상 순위 기준을 인덱스 구성으로 옮기십시오. 더 많은 실시간 컨텍스트를 사용하여 쿼리 시간에 결과를 추가로 조정해야 하는 경우에만 선택적 필터를 사용하십시오.
검색 UI에서 선택적 필터에 대한 훌륭한(또는 그다지 좋지 않은) 사용 사례를 찾으면 알려주세요!
Reference
이 문제에 관하여(기능 스포트라이트: 선택적 필터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/algolia/feature-spotlight-optional-filters-42lp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)