Solr4:查询参数fq的用法(对结果进行过滤;两组关键词组合查询)
Solr查询参数文档可以参考:
http://wiki.apache.org/solr/CommonQueryParameters#head-6522ef80f22d0e50d2f12ec487758577506d6002
这里主要说一下fq参数的使用。
1. 需求一
搜索商户信息时,已经可以按指定关键词搜索;但有时需要缩小范围,比如在江苏省范围搜索,或者是苏州市范围内搜索。注意:不是指记录包含“江苏省”、"苏州市“关键词的,而是此记录的行政区域属性值是属于”江苏省“或者是”苏州市"的。
2. 实现一
1). schema.xml定义如下:
<field name="detail_id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="category_id" type="int" indexed="true" stored="true" required="true"/>
<field name="province_id" type="int" indexed="true" stored="true" required="true"/>
<field name="district_id" type="int" indexed="true" stored="true" required="true"/>
这些编号应该是不需要分词、需要索引、是否存储视情况而定;我这里设计为需要存储,并且设计为不能为空。
注意:千万别把这些field的type设计成中文分词的类型。
2). JSP页面中包含类似于如下代码:
// 代码片段一,获取查询参数
String q = request.getParameter("q"); // 查询参数
String cid = request.getParameter("cid"); // 分类
String pid = request.getParameter("pid"); // 省
String did = request.getParameter("did"); // 地区
// 代码片段二,解析查询参数
StringBuilder sbFilter = new StringBuilder();
if(!did.equals("")){
// 地区标识优先级大于省市级别
sbFilter.append("+district_id:" + did);
}else if(!pid.equals("")) {
sbFilter.append("+province_id:" + pid);
}
if(!cid.equals("0")) {
// 分类标识
sbFilter.append(" +category_id:" + cid);
}
// 代码片段三,初始化查询
SolrQuery params = new SolrQuery("text:(" + q + ")");
params.set("start", startRow);
params.set("rows", PAGE_ROWS);
params.set("fl", "detail_id,category_name,province_name,district_name,title,publish_time,detail_info");
params.set("sort", "publish_time desc");
params.addFilterQuery(sbFilter.toString());
3). q与fq的不同
如果单就上面的功能而言,把这些查询参数全部放在q中也能达到相关目的。但参数q有个副作用,如果正文中出现了id值,它会高亮的。比如说,查询江苏省的数据(江苏省的province_id=100),那么在搜索结果中如果包含了100这样的数字,这个100会被高亮显示的。
4). fq还可以查询一个时间段时的数据,具体参考它的文档。
3. 需求二
要求实现两组关键词的组合查询。
比如:两组关键词分别是(贪污、受贿)与(江苏省、苏州市),组合查询后输出结果是包含(贪污、江苏省)OR(贪污、苏州市)OR(受贿、江苏省)OR(受贿、苏州市)关键词的信息。
4. 实现二
实现方式请参考:Solr4:利用Filter实现两组关键词组合查询
Solr4:查询参数fq的用法(对结果进行过滤;两组关键词组合查询)的更多相关文章
- FeignClient调用POST请求时查询参数被丢失的情况分析与处理
前言 本文没有详细介绍 FeignClient 的知识点,网上有很多优秀的文章介绍了 FeignCient 的知识点,在这里本人就不重复了,只是专注在这个问题点上. 查询参数丢失场景 业务描述: 业务 ...
- MySQL 自学笔记_Union(组合查询)
1. Union查询简介 组合查询:有时在使用select语句进行数据查询时,想要将多个select语句在一个查询结果中输出,此时就需要使用Union关键字. Union的使用方法:用union将多个 ...
- Django之组合查询
一 .Django组合查询 很多电商网站中有组合搜索的功能,所谓组合搜索就是网页中组合多个条件,对数据库中进行查询,并且将结果显示在页面中,下面是所做组合查询效果图: 实现代码如下: <1> ...
- DAX/PowerBI系列 - 查询参数用法详解(Query Parameter)
PowerBI - 查询参数用法详解(Query Parameter) 很多人都不知道查询参数用来干啥,下面总结一下日常项目中常用的几个查询参数的地方.(本人不太欢hardcode的东西) 使用查询 ...
- Solr学习总结(四)Solr查询参数
今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事.这里先列出sol ...
- solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据
solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语 ...
- 【转】Solr客户端查询参数总结
今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事.这里先列出sol ...
- Solr 08 - 在Solr Web管理页面中查询索引数据 (Solr中各类查询参数的使用方法)
目录 1 Solr管理页面的查询入口 2 Solr查询输入框简介 3 Solr管理页面的查询方案 1 Solr管理页面的查询入口 选中需要查询的SolrCore, 然后在菜单栏选择[Query]: 2 ...
- Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解
Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解 Mysql慢查询开启 Mysql的查询讯日志是Mysql提供的一种日志记录,它用来记录在Mysql中响应 ...
随机推荐
- 【Nodejs】理想论坛帖子爬虫1.01
用Nodejs把Python实现过的理想论坛爬虫又实现了一遍,但是怎么判断所有回调函数都结束没有好办法,目前的spiderCount==spiderFinished判断法在多页情况下还是会提前中止. ...
- Setsockopt选项
讨论 Setsockopt选项 http://c.chinaitlab.com/cc/ccjq/200806/752042_3.html 总而言之,如果你肯定能一起发送多个数据集合(例如HTTP响应的 ...
- HTML5 精灵8方向移动+背景滚动+音效播放+鼠标事件响应
如何清空画布 通过调用函数 ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); 如何实现背景滚动 首先我们准备了一张2532*940 ...
- 从零开始学JavaScript四(数据类型)
一.分类 基本数据类型:undefined.null.string.Boolean.number 复杂数据类型:object object的属性以无序的名称和值对的形式 (name : value) ...
- Using QuickExec
Fiddler's QuickExec box allows you to launch script-commands quickly. Keyboard Shortcuts Hit ALT+Q t ...
- ideaIU-15.0.2 注册码
注册时选择 License server ,填 http://idea.lanyus.com ,然后点击 OK
- okhttp进行网络传输文件
其中使用了RXJava. public class HttpDataManager { private static HttpDataManager INSTANCE; private Request ...
- android的download manager(1)
android 2.3中引入了Download manager.作为一个service来优化长时间下载操作的处理.Download Manager通过处理HTTP链接.监控链接的变化和系统又一次启动来 ...
- HDUOJ----2647Reward
Reward Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- 机器学习性能度量指标:AUC
在IJCAI 于2015年举办的竞赛:Repeat Buyers Prediction Competition 中, 很多参赛队伍在最终的Slides展示中都表示使用了 AUC 作为评估指标: ...