zoukankan      html  css  js  c++  java
  • 如何实现从slor里拿数据

    1.先写一个配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
         <bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
         <constructor-arg index="0" value="http://localhost:8983/taotao"/>
         <property name="parser">
         <bean class="org.apache.solr.client.solrj.impl.XMLResponseParser"/>
         </property>
         <property name="maxRetries" value="1"/>
         <property name="connectionTimeout" value="500"/>
         
         </bean>
    
    
    </beans>

    2.写一个方法

    package com.mytaotao.search.service;
    
    import java.util.List;
    import java.util.Map;
    
    import org.apache.commons.lang3.StringUtils;
    import org.apache.solr.client.solrj.SolrQuery;
    import org.apache.solr.client.solrj.SolrServerException;
    import org.apache.solr.client.solrj.impl.HttpSolrServer;
    import org.apache.solr.client.solrj.response.QueryResponse;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.mytaotao.search.bean.Item;
    import com.mytaotao.search.bean.ItemResult;
    
    @Service
    public class SearchService {
        @Autowired
        private HttpSolrServer httpSolrServer;
    
        public ItemResult doGet(String keywords,Integer page,Integer rows) {
            
            //构造搜索条件
            SolrQuery solrQuery=new SolrQuery();
            //搜索关键词
            solrQuery.setQuery("title:"+keywords+" AND status:1");
            //设置分页
            solrQuery.setStart((Math.max(page, 1)-1)*rows);
            solrQuery.setRows(rows);
            //是否需要高亮
            Boolean isHighlighting=!StringUtils.equals("*", keywords)&&StringUtils.isNotBlank(keywords);
            if(isHighlighting) {
                //设置高亮
                solrQuery.setHighlight(true);//开启高亮组件
                solrQuery.addHighlightField("title");//高亮字段
                solrQuery.setHighlightSimplePre("<em>");//标记,高亮关键字前缀
                solrQuery.setHighlightSimplePost("</em>");//后缀
            }
            //执行查询
            try {
                QueryResponse queryResponse =httpSolrServer.query(solrQuery);
                System.out.println(queryResponse);
                long totals = queryResponse.getResults().getNumFound();
                List<Item> items = queryResponse.getBeans(Item.class);
                if(isHighlighting) {
                    Map<String, Map<String, List<String>>> map = queryResponse.getHighlighting();
                    for(Map.Entry<String, Map<String, List<String>>> highlighting:map.entrySet()) {
                        for(Item item:items) {
                            if(!highlighting.getKey().equals(item.getId().toString())) {
                                continue;
                            }
                            item.setTitle(StringUtils.join(highlighting.getValue().get("title"),""));
                            break;
                        }
                    }
                }
                
                return new ItemResult(totals, items);
            
            } catch (SolrServerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            return null;
        }
        
        
    
    }

    3.添加jar包

        <dependency>
                <groupId>org.apache.solr</groupId>
                <artifactId>solr-solrj</artifactId>
                <version>4.10.2</version>
            </dependency>
  • 相关阅读:
    python虚拟环境使用
    虚拟化网络进阶管理
    虚拟化进阶管理
    KVM虚拟化
    Xen虚拟化
    Virtualization基础
    Virnish使用
    CentOS配置FTP服务器
    Ajax结合Json进行交互数据(四)
    将 数据库中的结果集转换为json格式(三)
  • 原文地址:https://www.cnblogs.com/sh-0131/p/11742144.html
Copyright © 2011-2022 走看看