如何使用Spring Data进行Rescore弹性搜索?

时间:2017-10-05 23:01:12

标签: elasticsearch spring-data-elasticsearch

我在Spring Data Elastic搜索客户端上使用spring boot。

我有类似

的东西
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder();
QueryBuilder nameQuery = boolQuery().should(matchQuery("fullName", queryText)).boost(10)
                .should(matchQuery("fullName", queryText).fuzziness(Fuzziness.ONE)).boost(1.5f)
                .should(matchQuery("fullName.autocomplete", queryText)).boost(2f)
                .should(matchQuery("fullName.metaphone", queryText)).boost(1.2f)
                .should(matchQuery("fullName.synonym", queryText)).boost(2)
                .should(matchQuery("fullName.porter", queryText));

searchQueryBuilder.withQuery(nameQuery);

List<MasterIndex> masterIndices = masterIndexRepository.search(searchQueryBuilder.build());

在获得所有名称之后,我想尝试使用其他一些属性重新安排重新排序可能更相关的结果。我知道有一个rescore查询,比如这个

RescoreBuilder.QueryRescorer rescoreBuilder = RescoreBuilder.queryRescorer(boolQuery().should(hasChildQuery("client",
            QueryBuilders.boolQuery()
                         .should(QueryBuilders.termsQuery("enrollments.programId", programId))
            ))).setQueryWeight(0.7f).setRescoreQueryWeight(0.3f);

但是如何将rescoreBuilder与NativeSearchQueryBuilder放在一起?

或者,如果有任何其他方式来自定义分数并更智能地订购结果,请告诉我。

0 个答案:

没有答案