# A/B 测试
在优化搜索体验的背景下, A/B 测试是指通过测试不同搜索和排序参数的效果,以实证方式确定哪组选项能为用户带来最相关的结果(以及转化率提升)的过程。
市面上有多种 A/B 测试平台可供选择,例如:
- Flagsmith (opens new window)
- Growthbook (opens new window)
- Google Optimize (opens new window)
- Split.io (opens new window)
- Visual Web Optimizer (opens new window)
- Optimizely (opens new window)
这些平台在各自领域都非常出色,因此 Typesense 不打算提供内置的 A/B 测试功能。 本文将探讨如何利用这些现有平台来运行搜索参数调优测试,从而优化 Typesense 的表现。
# A/B 测试类型
您可以对以下内容进行 A/B 测试:
# 方法论
- 在您的 A/B 测试平台上创建一个实验(Experiment)或测试(Test),同时设置
N
个分组(buckets)或变体(variations)。 - 当用户访问页面/屏幕时,A/B 测试平台会将其分配到一个分组或变体中。
- 在前端应用中,您需要编写条件代码块来获取用户被分配到的分组/变体,然后配置 Typesense 搜索 API 调用,为该特定分组使用一组特定的搜索参数或特定的集合名称(如果您正在测试覆盖规则或同义词)。
- 您定义的转化事件会像往常一样在 A/B 测试平台中进行追踪,您可以在测试结果中查看参数更改的效果。
# 示例
假设我们有一个图书搜索功能,想要确定最佳的 query_by
字段(特别是字段的优先级顺序)。
我们首先会在 A/B 测试平台中创建一个名为 "Query By Priority" 的实验,包含以下变体:
- title_priority(标题优先)
- author_priority(作者优先)
- control(对照组)
当用户访问页面时,A/B 测试平台会将他们分配到其中一个分组。
我们在前端会编写类似这样的条件判断:
const currentVariation = ABTestingLibrary.getCurrentVariation(); // 请参考您使用的 A/B 测试平台文档获取正确的方法
let queryBy = 'categories,title,author'
if(currentVariation === 'title_priority') {
queryBy = 'title,author'
} else if(currentVariation === 'author_priority') {
queryBy = 'author,title'
}
const typesenseClient = new TypesenseClient({...});
client.collections('books').documents().search({
'q': query,
'query_by': queryBy,
//...
})
实际上,根据用户被分配到的分组,我们会为 query_by
使用不同的值。
我们可以使用类似的机制来切换集合名称,以测试覆盖规则和同义词,或者其他搜索参数。
为了跟踪结果,我们需要在搜索结果页面上添加代码,将点击事件发送到 A/B 测试平台,同时发送其他标准转化事件(如购买)。
然后 A/B 测试平台会汇总所有变体的结果,并根据您的目标展示哪个变体表现最佳。