Algolia:跨多个领域搜索和评分结果
Algolia: Search across multiple fields and scoring results
我要在 algolia 中完成以下任务
上下文
我的索引中有以下记录集
[
{
"name" : "Don Joe",
"experience": {
"job_title": "Example 1",
"superpowers": [
"Golang", // <- MATCH (see below)
"Vue", // <- MATCH (see below)
"React"
],
"skills": [
"Docker",
"Goa",
"Elixir",
"Kubernetes",
"Istio",
"Phoenix",
"Javascript"
]
},
"completed_at": 1590509228,
},
{
"name" : "John Doe"
"experience": {
"job_title": "Example 2",
"superpowers": [
"Golang", // <- MATCH (see below)
"Phoenix",
"React"
],
"skills": [
"Docker",
"Vue", // <- MATCH (see below)
"Kubernetes",
"Elixir",
"Goa",
"Javascript",
"Typescript"
]
},
"completed_at": 1590519361,
}
]
可搜索属性设置为
- 无序(experience.superpowers)
- 无序(experience.skills)
排名是默认的,加上
- 自定义排名描述(completed_at)
我做什么
简单的文本搜索Golang Vue
我期待的
超能力优先于技能,所以"Don Joe"的超能力中有Golang和Vue(而"John Doe"有Golang超能力和Vue技能)应该先出现
取而代之的是什么
2条得分相同,平局算法给出错误的(这不是这里的主要问题,问题是它们首先得分相同)
知道我应该如何配置 algolia 来执行我期望的操作吗?
提前致谢
解决方案
我是这样解决的:
- 将文本搜索转换为 "facets based" 搜索
- 将
experience.skills
和 experience.superpowers
设置为分面
- 使用一系列
OR
带分数的过滤器来获得所需的方面
{
"filters": "experience.skills:Vue<score=1> OR experience.skills:Golang<score=1> OR experience.superpowers:Vue<score=2> OR experience.superpowers:Golang<score=2>",
"sumOrFiltersScores": true
}
重要:设置"sumOrFiltersScores": true
启用分数总和并使用加权搜索
- 使用上一步中的负载调用您的搜索方法。
资源:
我要在 algolia 中完成以下任务
上下文
我的索引中有以下记录集
[
{
"name" : "Don Joe",
"experience": {
"job_title": "Example 1",
"superpowers": [
"Golang", // <- MATCH (see below)
"Vue", // <- MATCH (see below)
"React"
],
"skills": [
"Docker",
"Goa",
"Elixir",
"Kubernetes",
"Istio",
"Phoenix",
"Javascript"
]
},
"completed_at": 1590509228,
},
{
"name" : "John Doe"
"experience": {
"job_title": "Example 2",
"superpowers": [
"Golang", // <- MATCH (see below)
"Phoenix",
"React"
],
"skills": [
"Docker",
"Vue", // <- MATCH (see below)
"Kubernetes",
"Elixir",
"Goa",
"Javascript",
"Typescript"
]
},
"completed_at": 1590519361,
}
]
可搜索属性设置为
- 无序(experience.superpowers)
- 无序(experience.skills)
排名是默认的,加上
- 自定义排名描述(completed_at)
我做什么
简单的文本搜索Golang Vue
我期待的
超能力优先于技能,所以"Don Joe"的超能力中有Golang和Vue(而"John Doe"有Golang超能力和Vue技能)应该先出现
取而代之的是什么
2条得分相同,平局算法给出错误的(这不是这里的主要问题,问题是它们首先得分相同)
知道我应该如何配置 algolia 来执行我期望的操作吗?
提前致谢
解决方案
我是这样解决的:
- 将文本搜索转换为 "facets based" 搜索
- 将
experience.skills
和experience.superpowers
设置为分面 - 使用一系列
OR
带分数的过滤器来获得所需的方面
重要:设置{ "filters": "experience.skills:Vue<score=1> OR experience.skills:Golang<score=1> OR experience.superpowers:Vue<score=2> OR experience.superpowers:Golang<score=2>", "sumOrFiltersScores": true }
"sumOrFiltersScores": true
启用分数总和并使用加权搜索 - 使用上一步中的负载调用您的搜索方法。