elasticsearch的匹配与排序问题

后台搜索使用的java api

public List<Team> searchQueryTeam(String term, int limit, int offset, int isHighlight, long seed) throws Exception {

        final List<Team> list = new ArrayList<Team>();

        SearchRequestBuilder srbTeam = client.prepareSearch(INDEX_NAME)
                .setTypes("Team")
                .setSearchType(SearchType.DEFAULT);

        if (StringUtils.isNotEmpty(term)) {

            BoolQueryBuilder qbTeam = QueryBuilders.boolQuery().must(QueryBuilders.termQuery("rowState", 0))
                    .mustNot(QueryBuilders.termQuery("status", 1));

            qbTeam.must(QueryBuilders
                    .boolQuery()
                    .should(QueryBuilders.wildcardQuery("name", "*" + term + "*").boost(10f))
                    .should(QueryBuilders.fuzzyLikeThisQuery("name", "description", "tag").analyzer("ik")
                            .likeText(term)).boost(0.1f));

            srbTeam.setQuery(qbTeam);
        }
        ……

当term是10时,在head里复制了上面程序生成的语句

{
  "from" : 0,
  "size" : 10,
  "query" : {
    "bool" : {
      "must" : [ {
        "term" : {
          "rowState" : 0
        }
      }, {
        "bool" : {
          "should" : [ {
            "wildcard" : {
              "name" : {
                "wildcard" : "*10*",
                "boost" : 10.0
              }
            }
          }, {
            "flt" : {
              "fields" : [ "name", "tag","description" ],
              "like_text" : "10",
              "analyzer" : "ik"
            }
          } ],
          "boost" : 0.1
        }
      } ],
      "must_not" : {
        "term" : {
          "status" : 1
        }
      }
    }
  }
}

查询的结果

 hits: {
       total: 2
       max_score: 0.9193326
       hits: [
           {
           _index: tmwk
           _type: Team
           _id: 309
           _score: 0.9193326
           _source: {
                   createDate: 2014-12-11 15:41:25
                   rowState: 0
                   id: 309
                   name: 产品研发团队
                   description: 产品研发团队是公司的重中之重,所有产品的源头来源于需求
                   status: 0
                   tag: 19, 17, 狗, 18, 15, 四六级, 我的
                   projectCount: 0
                   userCount: 0
                   role: null
                   lastModifiedDate: 2014-12-24 16:26:38
                   }
          }
          {
          _index: tmwk
          _type: Team
          _id: 270
          _score: 0.90041924
          _source: {
                   createDate: 2014-11-21 17:00:09
                   rowState: 0
                   id: 270
                   name: 10101010
                   description: sddd四六级额哦如萨拉杜甫,算法链接偶萨拉非。三等奖哦额乳酸代理费见,斯蒂芬就咯额ulsdjfsd。
                   status: 0
                   tag: 牛逼, 埃菲尔, 英国, 乒乓, 自行车, 天鹅
                   projectCount: 0
                   userCount: 0
                   role: null
                   lastModifiedDate: 2014-11-21 17:00:09
                   }
          }
       ]
}

建索引前,先设置了mapping,对name字段不做分词,其他的字段analyzer都设置为ik,不明白查询关键词是10时,为何会匹配到 tag: 19, 17, 狗, 18, 15, 四六级, 我的  这条,而且排名第一,程序里设置的boost也完全没生效,请问如何能做到准确匹配跟使模糊查询结果排到后面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0X码上链

你的鼓将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值