我想实施类似亚马逊的'产品类别'建议。亚马逊建议搜索特定类别中的给定术语而不是全局搜索。这允许更具体的搜索和结果。使用elasticsearch实现建议'xxx in category'
有没有办法如何实施这一使用由elasticsearch提供的建议功能之一?
目前我的想法是从elasticsearch中获取建议,并将它们按类别分组作为后期处理。有没有内置的东西,返回准备好的“分类”结果?
我想实施类似亚马逊的'产品类别'建议。亚马逊建议搜索特定类别中的给定术语而不是全局搜索。这允许更具体的搜索和结果。使用elasticsearch实现建议'xxx in category'
有没有办法如何实施这一使用由elasticsearch提供的建议功能之一?
目前我的想法是从elasticsearch中获取建议,并将它们按类别分组作为后期处理。有没有内置的东西,返回准备好的“分类”结果?
如果您事先知道categories
,则可以使用completion suggester作为传递它们。
我创造了这个样本指数
然后我插入几个产品,有效载荷提供类别
PUT suggest_index/product/11
{
"name": "watches",
"suggest": {
"input": [
"watches"
],
"payload": {
"categories": [
"Men",
"Women",
"Kids"
]
},
"weight": 10
}
}
和
{
"name": "phones",
"suggest": {
"input": [
"phones"
],
"payload": {
"categories": [
"Electronics",
"Office Products"
]
},
"weight": 10
}
}
然后,当您查询,您将获得所有类别都带有建议。
POST suggest_index/_suggest
{
"product-suggest": {
"text": "pho",
"completion": {
"field": "suggest"
}
}
}
这是输出我得到
"product-suggest": [
{
"text": "pho",
"offset": 0,
"length": 3,
"options": [
{
"text": "phones",
"score": 10,
"payload": {
"categories": [
"Electronics",
"Office Products"
]
}
}
]
}
]
现在你可以告诉他们在前台,当用户点击搜索按钮,你可以在与该类别和产品信息可能不同的索引搜索。
这是否符合您的要求?
如果您使用“mobile mobile”这个名称为附加产品编制索引,您将得到两个结果:'phones'和'phones mobile'。类别不会分组。但也许我看起来太过分了。也许一个简单的聚合'分类'会做这项工作.. – paweloque
是的,你是对的,但正如你所说聚合可以帮助你。 – ChintanShah25
您是否会提前知道“类别”,即当您索引数据意味着索引说“电话”时,您是否了解“电子产品”,“办公用品”等?或者你想单独查询类别? – ChintanShah25
是的,我知道'categories'提前。 – paweloque