目的是提供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

solr特点三: 排序样例汇总的更多相关文章

  1. 教你写Http框架(二)——三个样例带你深入理解AsyncTask

    这个标题大家不要奇怪,扯Http框架怎么扯到AsyncTask去了,有两个原因:首先是Http框架除了核心http理论外.其技术实现核心也是线程池 + 模板 + handler,而AsyncTask又 ...

  2. springMVC的接受参数三种样例

  3. solr特点三: QueryElevation(编辑结果排序)

    在理想的情况下,搜索引擎只返回与用户查询相关的文档.而在现实的查询中,编辑(没发现更合适的表达)通常需要指定特定文档在搜索结果中的特定位置.这样做有很多原因.或许 “置顶” 的文档就是最好的查询结果. ...

  4. Solr 6.7学习笔记(02)-- 配置文件 managed-schema (schema.xml) -- 样例(6)

    managed-schema 样例: <?xml version="1.0" encoding="UTF-8" ?> <!-- License ...

  5. C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

  6. Python word_cloud 样例 标签云系列(三)

    转载地址:https://zhuanlan.zhihu.com/p/20436642word_cloud/examples at master · amueller/word_cloud · GitH ...

  7. TreeSet排序,存储自己定义对象,自己定义比較器演示样例

    Set:无序.不能够反复元素. |--HashSet:数据结构是哈希表.线程是非同步的. 保证元素唯一性的原理:推断元素的hashCode值是否同样. 假设同样,还会继续推断元素的equals方法.是 ...

  8. 请编写一个方法,返回某集合的所有非空子集。 给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异。各子集内部从大到小排序,子集之间字典逆序排序,见样例。

    题解:观察测试样例,会发现每个子集的选择规律与二进制((2^n) - 1)到 1 的顺序生成的规律是一致的,样例中n=3,2^n-1=7,用二进制表示为111,其中每一位的1表示数组中的三个数都选择. ...

  9. 【UNIX网络编程(三)】TCP客户/server程序演示样例

    上一节给出了TCP网络编程的函数.这一节使用那些基本函数编写一个完毕的TCP客户/server程序演示样例. 该样例运行的过程例如以下: 1.客户从标准输入读入一行文本,并写给server. 2.se ...

随机推荐

  1. python re示例

    #!/usr/bin/env python # encoding: utf-8 # Date: 2018/5/25import re s = '124311200111155214'ss = re.s ...

  2. WPF DataGrid实现分页显示

    主要代码如下 /// <summary> /// 读取指定页面的数据 /// </summary> /// <param name="pagePerCount& ...

  3. C#中StreamWriter与BinaryWriter的区别兼谈编码。

    原文:http://www.cnblogs.com/ybwang/archive/2010/06/12/1757409.html 参考: 1. <C#高级编程>第六版 2.  文件流和数据 ...

  4. 记一次结巴分词.net core 2.0版 nuget发布过程

    最近用到分词考虑很久,选用了结巴分词,原因见博客Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考 既然选好了,难就开始行动吧 . 查了.ne ...

  5. Symfony 建立一个Bundle

    如果说,这个时候你萌生了一个去看一看Symfony源码的想法,个人建议还是算了,看了之后,你就会感到非常迷茫.因为他实在是大于绝大部分你使用过的框架,并且有多达近二十个的插件,使用了一些非常精巧的设计 ...

  6. archlinux错误:无法提交处理 (无效或已损坏的软件包)

    1.首先更新一下密钥,如果没有安装archlinux-keyring,请及时安装 sudo pacman-key --refresh-keys 2.重新加载相应的签名密钥 sudo pacman-ke ...

  7. 基础知识 一个工具给win7 win10的同学 或者MAC 可以跳过

  8. golang之流程控制(注意点)

    Go在流程控制方面特点如下: 没有do和while循环,只有一个广义的for语句 switch语句灵活多变,还可以用于类型判断 if语句和switch语句都可以包含一条初始化子语句 break语句和c ...

  9. C语言命令行处理

    一.简介 getopt()函数是一个标准库调用,可允许您使用直接的 while/switch 语句方便地逐个处理命令行参数和检测选项(带或不带附加的参数).与其类似的getopt_long()允许在几 ...

  10. Greeplum 系列(八) 数据维护

    Greeplum 系列(八) 数据维护 一.事务管理 begin(start transaction) # 开始事务 savepoint # 保存事务回滚点 rollback # 回滚事务 end(c ...