solr检索案例





1.详细的查询方法
controller中查询:
前台发送tmallIndexNew-3-----------------------------46.html格式的请求
ngix服务器接受后,转化为tmallIndexNew.html?pageNo=50格式
SearchShopsBean对象封装查询条件,Pagination对象封装分页条件
springmvc的controller拦截后,完成条件转换后,调用service进行查询,返回pagination对象
通过model.addAttribute("pagination",pagination)添加至视图中
return "shop/tmallIndex";跳转至对应的ftl文件中
service层查询方法
HttpSolrServer httpSolrServer = new HttpSolrServer("http://192.168.1.162:8983/solr/collection1");

SolrQuery solrQuery = new SolrQuery();
solrQuery.setStart((page.getPageNo() - 1) * page.getPageSize());//设置起始数据
solrQuery.setRows(page.getPageSize());//设置当前需查询数据的条数
StringBuilder params = new StringBuilder("ckstate:2 AND display:0 AND (status:1 OR isonline:1) AND sellercredit:[10 TO 100] AND (spTitle:*abc*)");
solrQuery.setQuery(params.toString());//设置where条件:=,or,to
solrQuery.addSort("sellercredit", SolrQuery.ORDER.desc);//设置排序条件

QueryResponse response = this.httpSolrServer.query(solrQuery);//执行查询并获取查询数据:
if (response != null) {
SolrDocumentList docs = response.getResults();
int num = (int)docs.getNumFound();//总记录数
List<Shops> list = response.getBeans(Shops.class);
int pageCount = page.GetPageCount(num, page.getPageSize());
page.setTotalCount(num);
page.setTotalPage(pageCount);
page.setList(list);
page.SetPageShow(page);
}
分页对象的数据格式:
public class Pagination {
private int pageNo=1;//当前页码
private int pageSize=15;//每页数量
private int totalPage;//总页数
private int totalCount;//总条数
private int onepage;//列表下方的页码最小值
private int lstpage;//列表下方的页码最大值
private List list;//数据封装
}
ftl模板中直接调用:
<#if pagination?? && (pagination.list)?? && pagination.totalCount gt 0>
<#if (pagination.totalCount)?? && pagination.totalCount != 0>
<#list pagination.list as list>
<#if (list.sp_title)??>${list.sp_title}</#if>
</#list>
</#if>
</#if>

2.maven文件引用jar包:
<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>4.7.2</version>
</dependency>


2.传统sql语句和solr语句之间的对比:
SELECT log_id,start_time,end_time,prov_id,city_id,area_id,idt_id,cnt,net_type 
FROM v_i_event
WHERE prov_id = 1 AND net_type = 1 AND area_id = 10304 AND time_type = 1 AND time_id >= 20130801 AND time_id <= 20130815
ORDER BY log_id LIMIT 10;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值