使用产品广告Api和Elasticsearch在顶部展示最合适的产品

时间:2018-07-17 16:36:54

标签: elasticsearch amazon-product-api

问题陈述

我们正在使用Product Advertising APIItem Search操作,在此我们将产品从亚马逊索引到我们的Elasticsearch索引。 每当用户搜索任何产品时,都会对存储在我们索引中的文档进行搜索。

问题在于,根据我们的索引进行搜索时返回的产品相关性不大。

示例文档如下:

{
  "product_url": "https://www.amazon.com/Posse-Comitatus-Unisex-Adult-One-Size/dp/B072BPW34V",
  "title": "Thin RED Line USA flag Posse Comitatus Unisex Adult One-Size Cap Hat Black",
  "product_group": "Apparel",
  "description": "Thin RED Line USA flag Posse Comitatus Unisex Adult One-Size Cap Hat Black"
}

所有字段均为text字段。

我们首先尝试使用如下汇总方法找到最合适的类别:

GET index_name/_search
  {
   "size": 0,
   "query":  {
   "match": {
   "title": {
    "query": "search_term",
    "minimum_should_match": "60%"
          }
        }
     } ,
  "aggs": {
  "Group By Category": {
  "terms": {
    "field": "product_group.keyword",
    "size": 2
       }
     }
   }
 }

假设它返回了ApparelSports,然后我们使用上述查询返回的类别,例如:

{
 "query": {
   "bool": {
    "should": [
     {
      "multi_match": {
        "query": "Search Term",
        "fields": [
          "product_url^5",
          "description^3",
          "title^10"
        ],
         "minimum_should_match": "60%"
        }
      }
    ],
    "must": [
    {
      "bool": {
        "should": [
          {
            "term": {
              "product_group.keyword": {
                "value": "Apparel"
              }
            }
          },
          {
            "term": {
              "product_group.keyword": {
                "value": "Sports"
               }
             }
           }
         ]
       }
     }
    ]
   }
  }
}

在某些情况下它可以工作,但是在某些意义上却失败,它仅在少数情况下会带来合适的类别。例如:搜索Home时,它会带来Stephen King个项目,而Books是最相关的结果。

我的问题是:有什么方法可以通过Product Advertising API或通过对ES索引本身进行一些更改来找到最合适的类别。

0 个答案:

没有答案