solrj的使用和开发总结

solrj是一个API,java通过特定的方法可以连接到solr与solr的互动。:

  • solrj的使用步骤

  • solrj的facet

  • solrj查询日期时间


solrj的使用步骤

1、先导包
对于maven工程,直接将下面内容加入到pom文件中即可:

<dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-solrj</artifactId>
            <!-- 对于版本号可以自己定义 -->
            <version>6.2.1</version>
</dependency>

非maven工程,可在solr安装目录下找到所有需要的jar包:
这里写图片描述
2、创建solrclient
这里写图片描述
3、有了solrclient之后,我们可以通过创建SolrQuery来拼接solr的查询参数,并且提交。

    SolrQuery query = new SolrQuery();

4、Solr的一些查询参数对应
这里写图片描述

query.setQuery(“查询字符串”)也可以使用query.set(“q”, “查询字符串”)他们是等效的。
下面的二行也是等效的
query.set("fl", "category,title,price");
query.setFields("category", "title", "price")

5、提交查询

//提交查询
QueryResponse quResp = solr.query(query);
//返回的facetPivot
quResp.getFacetPivot();
//返回的结果集
quResp.getResults();
//返回的数量
quResp.getResults().getNumFound();

solrj的facet

facet的查询

进行facet查询需要在请求参数中加入“facet=on”或者“facet=true只有这样facet组件才起作用

facet的参数见solr官方wiki http://wiki.apache.org/solr/SimpleFacetParameters
1.facet.field 分组的字段
2. facet.pivot 按照多个维度进行分组查询
3.facet.prefix 表示Facet字段前缀
4.facet.limit Facet字段返回条数(不设置默认返回一百以内,设置为-1,返回条数不限制)
5.facet.offict 开始条数,偏移量,它与facet.limit配合使用可以达到分页的效果
6.facet.mincount Facet字段最小count,默认为0
7.facet.missing 如果为on或true,那么将统计那些Facet字段值为null的记录
8.facet.method 取值为enum或fc,默认为fc, fc表示Field Cache
9.facet.enum.cache.minDf 当facet.method=enum时,参数起作用,文档内出现某个关键字的最少次数
facet.field

如果需要对多个字段进行facet查询,可以将该参数声明多次:
http://10.47.12.142:8983/solr/test/select?q=*:*&facet.field=che_brand&facet.pivot=che_factory,che_brand &facet=on
等效于:
       SolrQuery query = new SolrQuery();
query.set(“q”,”*:*”);
query.set(“facet.field”,” che_brand”); 
query.set(“facet.pivot”,” che_factory,che_brand”);
query.set(“facet”,”on”);

XML代码 结果如下:
<lst name="facet_fields">
<lst name="che_factory">
<int name="上汽通用">94071</int>
<int name="上汽大众">76042</int>
<int name="一汽大众">38590</int>
<int name="东风本田">10657</int>
</lst>
<lst name="che_brand">
<int name="大众">70595</int>
<int name="别克">41825</int>
<int name="D-大众">31512</int> 
<int name="D-帝豪">416</int>
</lst>
</lst>

各个facet字段互不影响,且可以针对每个facet字段设置查询参数。
f.字段名。参数名=参数值
http://10.47.12.142:8983/solr/test/select?q=*:*&facet.field=che_factory&facet=on&f.che_factory.facet.prefix=上汽通用
结果:

<lst name="facet_fields">
<lst name="che_factory">
<int name="上汽通用">94071</int>
<int name="上汽通用五菱">4114</int>
</lst>
</lst>

facet.pivot

http://10.47.12.143:8983/solr/lincai/select?q=*:*&facet.pivot=lin_store_area,lin_factory,lin_brand&facet=on

XML代码结果如下:
这里写图片描述
前台展现结果:
这里写图片描述

solrj查询日期时间

timestamp:[* TO *]//时间不限制
timestamp:[2016-02-07T15:21Z TO *] //从2016-02-7 15:21开始
timestamp:[2016-02-07T15:21Z T2017-02-07T15:21Z]//2016-02-7 15:21到2017-02-7 15:21
一般情况下使用[]设置范围,而[]表示的是闭区间,也就是包含端点值。
如果不希望包含端点值,就需要用到开区间,用大括号来限定{}。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值