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的用法(对结果进行过滤;两组关键词组合查询)的更多相关文章

  1. FeignClient调用POST请求时查询参数被丢失的情况分析与处理

    前言 本文没有详细介绍 FeignClient 的知识点,网上有很多优秀的文章介绍了 FeignCient 的知识点,在这里本人就不重复了,只是专注在这个问题点上. 查询参数丢失场景 业务描述: 业务 ...

  2. MySQL 自学笔记_Union(组合查询)

    1. Union查询简介 组合查询:有时在使用select语句进行数据查询时,想要将多个select语句在一个查询结果中输出,此时就需要使用Union关键字. Union的使用方法:用union将多个 ...

  3. Django之组合查询

    一 .Django组合查询 很多电商网站中有组合搜索的功能,所谓组合搜索就是网页中组合多个条件,对数据库中进行查询,并且将结果显示在页面中,下面是所做组合查询效果图: 实现代码如下: <1> ...

  4. DAX/PowerBI系列 - 查询参数用法详解(Query Parameter)

    PowerBI  - 查询参数用法详解(Query Parameter) 很多人都不知道查询参数用来干啥,下面总结一下日常项目中常用的几个查询参数的地方.(本人不太欢hardcode的东西) 使用查询 ...

  5. Solr学习总结(四)Solr查询参数

    今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事.这里先列出sol ...

  6. solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据

    solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语 ...

  7. 【转】Solr客户端查询参数总结

    今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事.这里先列出sol ...

  8. Solr 08 - 在Solr Web管理页面中查询索引数据 (Solr中各类查询参数的使用方法)

    目录 1 Solr管理页面的查询入口 2 Solr查询输入框简介 3 Solr管理页面的查询方案 1 Solr管理页面的查询入口 选中需要查询的SolrCore, 然后在菜单栏选择[Query]: 2 ...

  9. Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解

    Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解   Mysql慢查询开启 Mysql的查询讯日志是Mysql提供的一种日志记录,它用来记录在Mysql中响应 ...

随机推荐

  1. 使用grep进行文本查找

    命令模式: grep "文本" -rl 路径 例子: grep "w3.the.abc.com" -rl /home/hy/fluent3 有时候需要排除掉一些 ...

  2. 高并发分布式环境中获取全局唯一ID[分布式数据库全局唯一主键生成]

    需求说明 在过去单机系统中,生成唯一ID比较简单,可以使用MySQL的自增主键或者Oracle中的sequence, 在现在的大型高并发分布式系统中,以上策略就会有问题了,因为不同的数据库会部署到不同 ...

  3. error loading /system/media/audio/ui/Effect_Tick.ogg

    问题原因: 同一个AVD,调试了很多个项目,产生了N多个log文件,这些文件可能产生了影响. 解决办法: 新建一个AVD即可.

  4. jQuery(一)引入

    一.jQuery简介 jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多) 二.安装 2.1.下载 下载地址:http://jq ...

  5. IO习题

    1.Java实现将九九乘法表输入到文本文件 public class Test1 { public static void main(String[] args) throws FileNotFoun ...

  6. margin赋值为负值的几种效果(负值像素,负值百分数)

    1.margin-top为负值像素 margin-top为负值像素,偏移值相对于自身,其后元素受影响,见如下代码: <!DOCTYPE html> <html lang=" ...

  7. iOS Dev (50)用代码实现图片加圆角

    用代码实现图片加圆角:       iconView.layer.masksToBounds = YES;       iconView.;

  8. jersey获取各个参数的总结

    service端: @Path("/hello") public class HelloService { @GET @Produces("text/plain" ...

  9. System.out.print实现原理猜解

    我们往往在main中直接调用System.out.print方法来打印,但是其实就这简单的一步里面有很多的玄机,因为main是static的,所以只能调用static的函数,那么print是stati ...

  10. 腾讯云-Linux 基础入门

    Linux 基础入门 目录操作 任务时间:5min ~ 10min 创建目录 使用 mkdir 命令创建目录 mkdir $HOME/testFolder # $HOME 当前用户的家目录  root ...