在类别'中实施建议' xxx使用elasticsearch

时间:2016-01-20 14:47:23

标签: elasticsearch e-commerce search-suggestion

我想实现类似亚马逊的'类别'对产品的建议。亚马逊建议在特定类别中搜索给定术语,而不是全局搜索。这允许更具体的搜索和结果。

Amazon Suggestion 'in-category'

有没有办法如何使用elasticsearch提供的建议功能之一来实现这个?

目前我的想法是从elasticsearch获取建议并按类别将它们分组为后期处理。是否有内置的东西,返回准备好的类别'结果如何?

1 个答案:

答案 0 :(得分:2)

如果您事先了解categories,则可以使用completion suggester将其作为payload传递。

我创建了这个样本索引

PUT suggest_index/product/_mapping
{
  "product": {
    "properties": {
      "name": {
        "type": "string"
      },
      "suggest": {
        "type": "completion",
        "analyzer": "simple",
        "search_analyzer": "simple",
        "payloads": true
      }
    }
  }
}

然后我插入了几个产品,在有效载荷中提供类别

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"
                  ]
               }
            }
         ]
      }
   ]

现在您可以在前端显示它们,当用户点击搜索按钮时,您可以使用该类别和产品信息搜索可能不同的索引。

这是否符合您的要求?

相关问题