Solrj 排序样例汇总

简介: 假期梳理了之前在新浪博客的文档,将一些有用的内容搬到这里。本文介绍Solrj排序Demo。

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

1. 单维度排序

//查询条件

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);

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

 

2. 文本排序

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

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

 

3. 离线得分排序

// 查询条件

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

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

query.addSortField(field_service_value,ORDER.desc);

 

4. 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");


5. function查询排序

//按照指定函数排序

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

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

 

6. 文本和函数混合排序

//文本排序得分乘以权重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))") ;

 

7. 个性化排序

//这里搜索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

目录
相关文章
|
6月前
|
XML SQL Java
flyway的代码样例
以下是一个简单的使用 Flyway 进行数据库迁移的 Java 代码样例。在这个例子中,我们使用了 Maven 来管理项目依赖。 1. 首先,确保在 Maven 项目的 `pom.xml` 文件中添加 Flyway 的依赖: ```xml <dependencies> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>7.10.0</version> <!-- 使用最新版本 --> </depen
|
分布式计算
28 MAPREDUCE中的排序初步
28 MAPREDUCE中的排序初步
46 0
|
Java
如何实现倒序输出
如何实现倒序输出
101 0
|
分布式计算 Hadoop Java
【Big Data】Hadoop--MapReduce经典题型实战(单词统计+成绩排序+文档倒插序列)
🍊本文使用了3个经典案例进行MapReduce实战🍊参考官方源码,代码风格较优雅🍊解析详细。
446 0
|
算法 JavaScript C语言
web算法题:删除排序数组中的重复项
1.删除排序数组中的重复项 描述
94 0
web作业:字符串逆序输出
**有需要自取,必须标明出处 @param w String @return String
72 0
|
缓存 分布式计算 Hadoop
利用采样器实现mapreduce任务输出全排序
采样器是hadoop内自带的一个可以对目标文件部分数据进行提取的工具类,以方便我们对这些采样的数据做一些参考或者处理。hadoop提供了多种采样器供我们使用,以满足不同的需求。另外,采样器不同于普通mapreduce操作。
1137 0
|
Java
java 从键盘输入n个数,升序输出
java 从键盘输入n个数,升序输出
266 0
|
Java
JAVA实现数字倒序输出
JAVA实现数字倒序输出
190 0
JAVA实现数字倒序输出
|
分布式计算
MapReduce之输出结果排序
前面的案例中我们介绍了统计出每个用户的上行流量,下行流量及总流量,现在我们想要将输出的结果按照总流量倒序排序。
MapReduce之输出结果排序