代码之家  ›  专栏  ›  技术社区  ›  Hooman Bahreini

在搜索结果中推广某些客户的广告

  •  0
  • Hooman Bahreini  · 技术社区  · 5 年前

    我在一个电子商务网站上工作。我们正在我们的平台上列出工作。。。我们有不同的机构在我们的网站上列出他们的工作。。。我们叫他们Agency1,Agency2和Agency3

    Agnecy1正在向我们支付额外费用,我们希望推广他们的广告,使其在搜索结果中显示得更高。使用Elasticsearch可以实现这一点吗?

    我见过 boost 这允许提升特定领域,但不确定这对这种情况是否有用?我不想推进任何特定领域。。。我想增加属于Agency1的所有工作。

    使现代化

    我有一个索引叫做 job 其中包含以下字段:

    • 标题(字符串)
    • 描述(字符串)
    • 工作类别(字符串)
    • MinSalary(整数)
    • MaxSalary(整数)
    • 位置(字符串)
    • 机构(字符串)
    • 开始日期(日期时间)
    • 结束日期(日期时间)

    如前所述,如果Agency='Agency1',我想提升他们的工作列表在搜索结果中的排名。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Evaldas Buinauskas    5 年前

    当然这是可能的使用 bool 查询

    {
      "query": {
        "bool": {
          "must": [
            // Your current query
          ],
          "should": [
            {
              "constant_score": {
                "filter": {
                  "term": { "Agency": "Agency1" }
                },
                "boost": 1.2
              }
            }
          ]
        }
      }
    }
    

    布尔 query允许指定 must 火柴 should 子句不会过滤掉文档,只会在匹配时增强文档。

    因此,在本例中,将当前查询包装在 必须 下面的查询将给出add常量 1.2 在你的情况下,匹配文件的分数——属于 Agency1 机构

    阅读更多关于 boolean query .

        2
  •  -1
  •   Jozef - Spatialized.io    5 年前

    我想到的最简单的方法是在 function_score query .假设你有 .keyword mapping 开始 Agency field,您可以执行以下操作:

    POST job/_search
    {
      "query": {
        "bool": {
          "must": [
            {
              "function_score": {
                "functions": [
                  {
                    "script_score": {
                      "script": {
                        "source": "_score + (doc['Agency.keyword'].value == params.agency_to_promote ? params.increase_score_by : 0)",
                        "params": {
                          "agency_to_promote": "Agency 1",
                          "increase_score_by": 10
                        }
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }
    

    上面的脚本也可以是 stored 为了更快的执行。因素 10 是任意的——调整它以适应您的用例。