paw*_*que 5 e-commerce elasticsearch search-suggestion
我想为产品实施类似亚马逊的“类别内”建议。亚马逊建议在特定类别中搜索给定术语,而不是全局搜索。这允许更具体的搜索和结果。
有没有办法使用elasticsearch提供的建议功能之一来实现这一点?
目前我的想法是从 elasticsearch 中获取建议并按类别将它们分组作为后处理。是否有内置的东西,返回准备好的“类别内”结果?
如果您categories提前知道,您可以将它们作为payload使用完成建议器传递。
我创建了这个示例索引
PUT suggest_index/product/_mapping
{
"product": {
"properties": {
"name": {
"type": "string"
},
"suggest": {
"type": "completion",
"analyzer": "simple",
"search_analyzer": "simple",
"payloads": true
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我插入了几个产品,在有效负载中提供类别
PUT suggest_index/product/11
{
"name": "watches",
"suggest": {
"input": [
"watches"
],
"payload": {
"categories": [
"Men",
"Women",
"Kids"
]
},
"weight": 10
}
}
Run Code Online (Sandbox Code Playgroud)
和
{
"name": "phones",
"suggest": {
"input": [
"phones"
],
"payload": {
"categories": [
"Electronics",
"Office Products"
]
},
"weight": 10
}
}
Run Code Online (Sandbox Code Playgroud)
然后当您查询时,您将获得所有类别的建议。
POST suggest_index/_suggest
{
"product-suggest": {
"text": "pho",
"completion": {
"field": "suggest"
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出
"product-suggest": [
{
"text": "pho",
"offset": 0,
"length": 3,
"options": [
{
"text": "phones",
"score": 10,
"payload": {
"categories": [
"Electronics",
"Office Products"
]
}
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
现在您可以在前端显示它们,当用户点击搜索按钮时,您可以在可能不同的索引中搜索该类别和产品信息。
这满足您的要求吗?
| 归档时间: |
|
| 查看次数: |
1072 次 |
| 最近记录: |