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);

}

总结

  1. 创建HttpSolrServer对象
  2. 创建SolrQuery对象
  3. 设置SolrQuery对象的查询条件
    1. 设置查询条件
    2. 设置默认查询域
    3. 设置过滤条件
    4. 设置分页查询
    5. 设置排序条件
  4. 设置SolrQuery对象的高亮条件
    1. 开启高亮模式
    2. 设置高亮显示域
    3. 设置高亮标签
  5. HttpSolrServer对象调用查询方法,传入SolrQuery对象,获得QueryResponse查询响应对象
  6. 从查询响应对象中获取查询结果文档集合SolrDocumentList【.getResults()】
  7. 从查询响应对象中获取高亮集合Map<String, Map<String, List<String>>> 【.getHighlighting()】
  8. 封装查询结果,返回给上一层
    1. 获取id域的值
    2. 获取高亮域的值
      1. 从高亮集合中获取高亮字段【.get(id域的值).get("高亮域"),返回一个List,拿出List中的第一个元素就是高亮域的结果】
      2. 如果步骤1中的List中没有内容,直接获取高亮域的值【.get("高亮域")】
    3. 获取其他域的值
    4. 封装获取到的值为对象,再将对象整合成集合

 

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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值