zoukankan      html  css  js  c++  java
  • solr特点三: 排序样例汇总

    目的是提供solrj 实现 查询的样例参考

    单维度排序

    //查询条件

    query.setQuery(queryString);

    // add 是添加

    query.addSortField(field_price, ORDER.asc);

    //set是覆盖,也就是后面的覆盖前面的。

    query.setSortField(field_price,ORDER.desc);

    //如果需要第一维度值相等,按第二维度继续排序的话,继续add

    query.addSortField(field_fans_count, ORDER.asc);

    一般两个维度就可以了,也有定义第三个维度,就过去经验看,第三维度基本没起到区分效果。第一、二维度比较关键。

    文本排序

    // 查询条件 没有设定排序的,默认就是文本排序。文本的因子可以动态调整或者plugin

    query.setQuery("user_nick:淘宝女装");

    离线得分排序

    // 查询条件

    query.setQuery("user_nick:淘宝女装");

    //离线生成域field_service_value,里面保持复杂得分模型运算后的分值

    query.addSortField(field_service_value,ORDER.desc);

    boost查询排序

    // 查询条件 表示命中nick的权重是2,而命中descr的权重是0.5,最终是二者求和

    query.set("defType","lucene");

    query.setQuery("(user_nick:淘宝女装)^2 OR (user_descr:淘宝女装)^0.5");

    //查询条件,表示命中nick的权重2,命中descr权重0.5,最终那个大取那个

    query.set("defType","dismax");

    query.setQuery("淘宝女装");

    query.add("qf","user_nick^2,user_descr^0.5");

    function查询排序

    //按照指定函数排序

    query.set("q","user_nick:淘宝女装");

    query.set("sort","sum(fans_count,1) desc");

    文本和函数混合排序

    //文本排序得分 乘以权重2

    query.set("defType","dismax");

    query.setQuery("淘宝女装");

    query.add("qf","user_nick^2")

    //文本得分排序 乘以函数值

    query.set("defType","dismax");

    query.setQuery("淘宝女装");

    query.add("bf","div(fans_count,1)");//相除

    //文本得分排序 乘以函数值

    query.set("defType","lucene");

    query.setQuery("user_nick:淘宝女装 AND _val_:fans_count");

    //文本得分排序 乘以函数值

    query.set("defType","lucene");

    query.setQuery("user_nick:淘宝女装 AND _val_:fans_count^2");

    //文本得分排序 乘以函数值

    query.set("defType","lucene");

    query.setQuery("(user_nick:淘宝女装)^0.5 AND _val_:fans_count^2");

    //文本得分排序 乘以函数值

    query.set("defType","lucene");

    query.setQuery("(user_nick:淘宝女装)^0.5 AND _val_:1.5");

    //文本得分排序 与函数值 指定组合

    query.set("defType","func");

    query.add("qq","{!dismax qf=user_nick}淘宝女装");

    query.add("q","product(fans_count, query($qq,0.1))") ;

    个性化排序

    //这里搜索user_nick:淘宝女装的时候,文本得分可以是调整过的或者默认的

    query.setQuery("(user_nick:淘宝女装)^8 OR (user_descrip:淘宝女装)^2");

    query.setQuery("((user_nick:淘宝女装) AND _val_:fans_count) OR (user_descrip:淘宝女装)^2");

    其他,函数查询的发挥。文本域函数结合查询的发挥了。

    参考链接

    http://wiki.apache.org/solr/DisMaxQParserPlugin

    http://wiki.apache.org/solr/ExtendedDisMax

    http://wiki.apache.org/solr/FunctionQuery

  • 相关阅读:
    HDU 6191 Query on A Tree ( 2017广西邀请赛 && 可持久化Trie )
    BZOJ 4318 OSU! ( 期望DP )
    洛谷 P2473 [SCOI2008]奖励关 ( 期望DP )
    Codeforces #499 E Border ( 裴蜀定理 )
    HDU 6444 Neko's loop ( 2018 CCPC 网络赛 && 裴蜀定理 && 线段树 )
    HDU 6438 Buy and Resell ( 2018 CCPC 网络赛 && 贪心 )
    Nowcoder Hash Function ( 拓扑排序 && 线段树优化建图 )
    Nowcoder Playing Games ( FWT 优化 DP && 博弈论 && 线性基)
    js中的深拷贝与浅拷贝
    nrm 源管理器
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/354fdgfgfh.html
Copyright © 2011-2022 走看看