10分钟上手Orama分面搜索:打造电商级产品筛选系统
【免费下载链接】orama 项目地址: https://gitcode.com/gh_mirrors/ora/orama
Orama是一个强大的开源搜索引擎,专门为现代Web应用设计。🚀 Orama分面搜索功能允许用户通过特定属性(如类别、价格范围、品牌等)快速筛选搜索结果,极大提升了搜索体验和精准度。本文将带你快速掌握Orama分面搜索的核心用法,助你构建电商级的产品筛选系统。
什么是分面搜索?🤔
分面搜索(Faceted Search)是一种高级搜索技术,允许用户通过多个维度对搜索结果进行筛选。在电商网站中,你经常会看到这样的功能:搜索"手机"后,可以按品牌、价格区间、屏幕尺寸等条件进行进一步筛选。
Orama的分面搜索功能内置在核心搜索API中,支持字符串、数字、布尔值和枚举类型的属性筛选,让你轻松实现复杂的筛选逻辑。
快速开始:基础分面搜索配置
首先安装Orama:
npm install @orama/orama
然后创建一个简单的产品数据库:
import { create, insert, search } from '@orama/orama'
const db = await create({
schema: {
name: 'string',
price: 'number',
category: 'string',
brand: 'string',
inStock: 'boolean'
}
})
// 插入示例数据
await insert(db, {
name: '智能手机 Pro',
price: 5999,
category: 'electronics',
brand: 'TechBrand',
inStock: true
})
await insert(db, {
name: '无线耳机',
price: 899,
category: 'electronics',
brand: 'AudioTech',
inStock: false
})
实现分面搜索功能
使用Orama的分面搜索非常简单,只需要在搜索参数中添加facets配置:
const results = await search(db, {
term: '电子产品',
facets: {
category: {}, // 字符串分面
brand: {
limit: 10, // 限制显示10个品牌
sort: 'ASC' // 按字母顺序排序
},
price: {
ranges: [ // 数字范围分面
{ from: 0, to: 1000 },
{ from: 1000, to: 3000 },
{ from: 3000, to: 5000 },
{ from: 5000, to: 10000 }
]
},
inStock: { // 布尔值分面
true: true,
false: false
}
}
})
分面搜索结果解析
搜索结果中的facets字段包含了完整的分面统计信息:
console.log(results.facets)
// 输出示例:
// {
// category: {
// count: 2,
// values: { electronics: 2 }
// },
// brand: {
// count: 2,
// values: { TechBrand: 1, AudioTech: 1 }
// },
// price: {
// count: 4,
// values: { '0-1000': 1, '3000-5000': 1 }
// },
// inStock: {
// count: 2,
// values: { true: 1, false: 1 }
// }
// }
高级技巧:嵌套属性分面搜索
Orama支持嵌套属性的分面搜索,非常适合复杂的数据结构:
const db = await create({
schema: {
title: 'string',
meta: {
category: 'string',
tags: 'string[]',
rating: 'number'
}
}
})
const results = await search(db, {
term: '产品',
facets: {
'meta.category': {},
'meta.tags': {},
'meta.rating': {
ranges: [
{ from: 0, to: 2 },
{ from: 2, to: 4 },
{ from: 4, to: 5 }
]
}
}
})
性能优化建议
- 合理设置分面限制:使用
limit参数控制返回的分面值数量 - 预计算常用分面:对不经常变动的分面可以预先计算并缓存
- 异步加载分面:大量数据时可以考虑分步加载分面信息
实际应用场景
Orama分面搜索特别适合:
- 🛒 电商网站产品筛选
- 📚 内容管理系统分类浏览
- 🎵 媒体库按类型、年代筛选
- 📊 数据分析平台的多维度查询
总结
Orama的分面搜索功能强大而易用,通过简单的配置就能实现专业的筛选系统。无论是简单的分类筛选还是复杂的多级分面,Orama都能提供出色的性能和灵活性。
官方文档:packages/orama/src/types.ts 包含了完整的分面搜索API说明,测试用例:packages/orama/tests/facets.test.ts 提供了丰富的使用示例。
现在就开始使用Orama分面搜索,为你的应用增添强大的筛选能力吧!🎯
【免费下载链接】orama 项目地址: https://gitcode.com/gh_mirrors/ora/orama
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




