美文网首页
solr实现随机排序

solr实现随机排序

作者: 蓝汀华韶 | 来源:发表于2020-09-25 17:15 被阅读0次
    实现方式

    schema.xml文件中配置一个随机类型的字段

    <dynamicField name="rand*" type="random" indexed="true" stored="true" />
    

    配置完成后,重启下solr服务,在随机查询中加入这个字段的排序就可以实现随机取数据了

    场景1:在solr中查询某个条件的数据列表,随机返回N条数据

    使用如下:

    SolrQuery solrQuery = new SolrQuery("*:*");
    solrQuery.setStart(1);
    solrQuery.setRows(10);
    // 随机排序
    String randomField = "rand_" + ThreadLocalRandom.current().nextInt(100000);
    solrQuery.addSort(randomField, SolrQuery.ORDER.desc);
    
    场景2:分组后的数据随机取值
    int num = ThreadLocalRandom.current().nextInt(100000);
    String randomField = "rand_" + num + " ASC";
    SolrQuery solrQuery = new SolrQuery("*:*");
    solrQuery.setParam(GroupParams.GROUP, true)
             .setParam(GroupParams.GROUP_FIELD, fieldName)
             .setParam(GroupParams.GROUP_LIMIT, String.valueOf(1))
             .setParam(GroupParams.GROUP_SORT, randomField)
             .setParam(GroupParams.GROUP_TOTAL_COUNT, true);
    

    相关文章

      网友评论

          本文标题:solr实现随机排序

          本文链接:https://www.haomeiwen.com/subject/pamfuktx.html