php - 替换默认的Elasticsearch分数

标签 php elasticsearch

我有一个用户配置文件,其中包含一些字段:

  • 用户名
  • 性别
  • 国籍
  • 年龄
  • 语言
  • 首选语言
  • 首选年龄

  • 每个用户都应该能够基于某些过滤器(用户名,性别,年龄,语言)搜索其他用户,并且最终结果应该根据偏好(偏好的语言,偏好的年龄)按分数排序

    考虑以下示例:

    用户资料:
  • 用户名='randomdude'
  • 性别=“男”
  • 国籍='意大利语'
  • age ='21'
  • language ='英语,意大利语,西类牙语'
  • 首选语言='english,italian'
  • 首选年龄= '20 -30'

  • Randomdude希望对我们的ElasticSearch文档进行研究,他将设置以下过滤器:
  • 性别='女性'
  • 国籍='西类牙文'

  • 因此,最终列表中应仅包含西类牙女性,但应优先选择语言 Realm 为英语或意大利语且年龄在20至30岁之间的人,而不排除其他人。因此,他仍然可以看到讲西类牙语的人,只有40岁,但几乎排在最后。

    我正在使用Elasticsearch的php包装器。我尝试使用许多函数,但我认为应该使用函数得分查询,但由于文档对我来说非常混乱,因此无法使用。

    最佳答案

    我将了解ES:D我通过像这样的 bool(boolean) 查询解决了这个问题,但是我不确定这是最好的解决方案

    {
        "query" : {
            "bool" : {
                "must" :[
                    {"term" : { "gender" : "female" } },
                    {"term" : { "nationality" : "spanish" } },
                ],
                "should" :[
                    {"match" : { "language" : { "query" : "english italian","operator" : "or" } } },
                ]
            }
        }
    }
    

    关于php - 替换默认的Elasticsearch分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126950/

    相关文章:

    elasticsearch - Elastic Search 中的 HTML Strip

    php - 如何在不添加任何索引的情况下插入更新重复项

    php - WordPress 查询结果,其中所有列都与所选 id 的列具有相同的值

    elasticsearch - 匹配短语前缀查询

    elasticsearch - SonarQube使用不正确的(?)ElasticSearch查询来获取ScmAccountToUser

    elasticsearch - ElasticSearch bool 查询到Solrj查询

    php - 是否可以为数据库中的用户名选择准确的密码?

    PHP MySQL 组合 2 个查询

    php - 删除字符串,除非有空格

    c# - 查询文档并过滤嵌套字符串列表(即标签)中的特定值