目录
传统Spring整合Solr
1.导入依赖
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>8.5.1</version>
</dependency>
2.配置文件
solr.url=http://127.0.0.1:8983/solr/products2
solr.maxRetries=2
solr.connectionTimeout=5000
3.Spring配置文件(spring-solr.xml)
在Solrj 5+版本中,类HttpSolrServer迁移至HttpSolrClient
HttpSolrClient有三个构造器,但是两个已经被不推荐使用(弃用)
可用:HttpSolrClient(Builder builder),发现所需的对象builder是内部类Builder创建的
先给baseSolrUrl一个Solr的URL创建Builder,再把这个Builder赋给HttpSolrClient的构造方法来取得对象
<!--整合solr服务器与客户端信息 -->
<context:property-placeholder location="classpath:solr.properties" />
<!-- Spring配置solrJ -->
<bean id="builder" class="org.apache.solr.client.solrj.impl.HttpSolrClient.Builder">
<!-- solrJ内核url -->
<constructor-arg name="baseSolrUrl" value="${solr.url}"/>
</bean>
<bean id="httpSolrClient" class="org.apache.solr.client.solrj.impl.HttpSolrClient">
<constructor-arg name="builder" ref="builder"/>
</bean>
<bean id="httpSolrClient" class="org.apache.solr.client.solrj.impl.HttpSolrClient">
<constructor-arg index="0" value="${solr.Url}" />
<!-- 建立连接的最长时间 -->
<property name="connectionTimeout" value="${solr.connectionTimeout}" />
<!-- 设置响应解析器 -->
<property name="parser">
<bean class="org.apache.solr.client.solrj.impl.XMLResponseParser" />
</property>
</bean>
4.service管理solr
将solr交给spring管理的,只写了service层跟serviceImpl
@Service
public class SolrServiceImpl implements SolrService {
@Autowired
private HttpSolrClient client; // xml中配置
@Override
public List<String> solr(String text) throws IOException,SolrServerException {
// ...省略具体操作
return comment ;
}
}
5.测试
通过用户输入一个字符,里面内容包括:商品名字+商品艺人姓名+商品地址,联合查询,查询出来的对象也不会是重复的数据