在使用solr的时候,需要搭建solr服务器,不管在windows或者linux下solr服务器的搭建在网上已经很多了,不在啰嗦了。
在本项目中,我们在搜索想要的商品的时候,用到了solr。根据前台商品列表的显示,只有五大属性,所以我们把它封装成一个类。
private String id; private String title; private String sell_point; private long price;private String image;
知道商品显示的数据后,需要在solr服务器schema.xml中配置业务域,首先需要在filedType中配置中文分析器,然后再filed中配置业务域。
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="long" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="true" />
在配置好业务域之后,需要将mysql中的数据导入到solr中,使用solr的客户端solrj。
在使用solrj客户端需要在spring容器中进行配置solr服务
<bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
<constructor-arg index="0" value="http://127.0.0.1:8088/solr/collection1"></constructor-arg>
</bean>
在service服务层进行导入:
//1.将数据库mysql中的数据进行获取List<pojo> list
//2.循环遍历list中的数据
//3.创建一个文档对象SolrDocument
//4.将文档对象加入业务域
//5.通过solrServer进行添加
//6.提交
在服务层进行搜索,首先会在表现层中传到服务层keyword关键字,当前页page,以及页的大小rows。
//1.先创建一个SolrQuery对象 SolrQuery query=new SolrQuery();
//2.使用query.setQuery(keyword) 设置查询条件
//3.使用query.setStart()来设置开始第几行
//4.使用query.setRows()来设置一页的大小
//5.query.set() 默认搜索域
//6。设置了query查询条件,通过调用SearchDao进行query的搜索
1)根据QueryResponse查询索引库 QueryResponse queryResponse=solrServer.query(query);
2)根据SolrDocumentList solrDocmentList=queryResponse.getResults()返回查询结果集
3)通过solrDocmentList.getNumFound()来返回查询总数
4)将查询过的总数保存到result中,
5)遍历solrDocment,保存到pojo中
6)因为该结果集是list类型,所以需要新建一个list对象进行保存。
//7.计算总页数,返回给结果集。