solrj的使用和开发总结

    xiaoxiao2021-03-25  108

    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 一般情况下使用[]设置范围,而[]表示的是闭区间,也就是包含端点值。 如果不希望包含端点值,就需要用到开区间,用大括号来限定{}。

    转载请注明原文地址: https://ju.6miu.com/read-22646.html

    最新回复(0)