Solrj使用检索
Posted ehow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solrj使用检索相关的知识,希望对你有一定的参考价值。
主要讲解Solrj的使用【查询】
//新建一个solr服务 HttpSolrServersolrServer=newHttpSolrServer("http://localhost:8983/solr/collection1"); //新建一个solr查询对象 SolrQuerysq=newSolrQuery(); //设置查询条件 //--设置查询条件 sq.setQuery("*:*"); //--设置默认查询域 sq.set("df","product_keywords"); //--设置过滤条件 sq.filterQueryies("product_catalog_name:衣服","product_price:[20TO50]"); //--设置分页条件 sq.setStart(0);//从第几条记录开始 sq.setRows(10);//页最大容量 //--设置查询结果排序 sq.setSort("product_price",ORDER.asc); //设置高亮 //--开启高亮显示 sq.setHighlight(true); //--设置高亮显示字段 sq.setHighlightField("product_name"); //--设置高亮标签 sq.setHighlightSimplePre("<fontcolor=‘red‘>"); sq.setHighlightSimplePost("</font>"); //查询,获得响应对象 QueryResponseqr=solrServer.query(sq); //获取查询结果集合 SolrDocumentListresultList=qr.getResults(); //获取高亮字段集合 Map<Stirng,Map<String,List<String>>>highlighting=qr.getHighlighting(); //封装查询结果 List<Porduct>productList=newArrayList<>(); for(SolrDocumentdoc:SolrDocumentList){ //获取id域 Stringid=doc.get("id").toString(); //获取名称域 Stringname=null; List<String>list=highlighting.get(id).get("product_name"); if(list!=null&&list.size>0){ name=list.get(0); }else{ name=doc.get("name").toString(); } //获取其他域 Stringprice=doc.get("price").toString(); Stringpicture=doc.get("picture").toString; //封装 Productp=newProduct(); p.setId(id); p.setName(name); p.setPrice(price); p.setPicture(picture); productList.add(p); }
总结
- 创建HttpSolrServer对象
- 创建SolrQuery对象
- 设置SolrQuery对象的查询条件
- 设置查询条件
- 设置默认查询域
- 设置过滤条件
- 设置分页查询
- 设置排序条件
- 设置SolrQuery对象的高亮条件
- 开启高亮模式
- 设置高亮显示域
- 设置高亮标签
- HttpSolrServer对象调用查询方法,传入SolrQuery对象,获得QueryResponse查询响应对象
- 从查询响应对象中获取查询结果文档集合SolrDocumentList【.getResults()】
- 从查询响应对象中获取高亮集合Map<String, Map<String, List<String>>> 【.getHighlighting()】
- 封装查询结果,返回给上一层
- 获取id域的值
- 获取高亮域的值
- 从高亮集合中获取高亮字段【.get(id域的值).get("高亮域"),返回一个List,拿出List中的第一个元素就是高亮域的结果】
- 如果步骤1中的List中没有内容,直接获取高亮域的值【.get("高亮域")】
- 获取其他域的值
- 封装获取到的值为对象,再将对象整合成集合
pom
<properties> <!-- spring版本号 --> <spring.version>4.3.8.RELEASE</spring.version> <!-- jstl标签版本 --> <jstl.version>1.2</jstl.version> <!-- commons-lang版本 --> <commons.lang.version>2.6</commons.lang.version> <!-- solrj版本 --> <solrj.version>4.10.3</solrj.version> <!-- log4j日志版本 --> <slf4j.version>1.7.7</slf4j.version> <log4j.version>1.2.17</log4j.version> <!-- jcl版本 --> <jcl.version>1.7.6</jcl.version> </properties> <dependencies> <!-- springmvc依赖包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <!-- JSTL标签类 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <!-- solrj依赖 --> <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>${solrj.version}</version> </dependency> <!-- log4j日志包 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${jcl.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId> <version>${jcl.version}</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>${commons.lang.version}</version> </dependency> <!-- jsp依赖包,只在编译时需要 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>jd</finalName> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <!-- tomcat 的端口号 --> <port>8080</port> <!-- 访问应用的路径 --> <path>/jd</path> <!-- URL按UTF-8进行编码,解决中文参数乱码 --> <uriEncoding>UTF-8</uriEncoding> <!-- tomcat名称 --> <server>tomcat7</server> </configuration> </plugin> </plugins> </build>
以上是关于Solrj使用检索的主要内容,如果未能解决你的问题,请参考以下文章