码迷,mamicode.com
首页 > 编程语言 > 详细

Java调用solrj5.5.3接口,查询数据

时间:2016-11-11 19:38:23      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:mem   exception   sde   ide   ipo   ext   uri   bcb   servlet   

前期准备

搭建solr服务

参考上一篇,搭建solr搜索服务。

添加依赖

maven工程的话,添加如下依赖,

<!-- https://mvnrepository.com/artifact/org.apache.solr/solr-solrj -->
<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>5.5.3</version>
</dependency>

也可以自己导入jar包

在solr安装目录下,找到solr-5.5.3\dist\solrj-lib路径,添加里面所有的jar包到自己的工程,别忘了在外面的文件夹还有个solr-solrj-5.5.3.jar包,一起拷贝。

技术分享

编写调用代码

这里简单给个示例(包含分页),Spring mvc工程的:

    @ResponseBody
    @RequestMapping(value = "/searchByKeyWord", method =
    { RequestMethod.POST, RequestMethod.GET }, produces = "application/json; charset=utf-8")
    public String search(HttpServletRequest request, HttpServletResponse response, String keyWord,
        int pageSize, int pageOffset)
    {
        try
        {
            String urlString = ConfigUtil.getValueByKey("solrServiceUrl");
            SolrClient solr = new HttpSolrClient(urlString);

            SolrQuery query = new SolrQuery();
            query.set("q", URLDecoder.decode(keyWord, "UTF-8"));
            query.set("start", String.valueOf(pageOffset * pageSize));
            query.set("rows", String.valueOf(pageSize));

            QueryResponse queryResponse = solr.query(query);

            // SolrDocumentList list = queryResponse.getResults();

            Map<String, Object> result = new HashMap<String, Object>();
            List<OCSearchObject> rstList = queryResponse.getBeans(OCSearchObject.class);
            result.put("success", true);
            result.put("key", URLDecoder.decode(keyWord, "UTF-8"));
            result.put("list", rstList);
            result.put("totalCount", queryResponse.getResults().getNumFound());
            solr.close();

            return json(result);
        }
        catch (Exception e)
        {
            LOGGER.error(e.toString(), e);
            return jsonpFalse(request, response, "code_error");
        }
    }

以下是OCSearchObject类,注意要与data-config.xml配置的字段对应起来,还有就是不要忘了在字段前面加上@Field注解(org.apache.solr.client.solrj.beans.Field)。

public class OCSearchObject
{
    private Long id;
    private String name;
    private String fullText;
    private String type;
    /**
     * @return the id
     */
    public Long getId()
    {
        return id;
    }
    /**
     * @param id the id to set
     */
    @Field("id")
    public void setId(Long id)
    {
        this.id = id;
    }
    /**
     * @return the name
     */
    public String getName()
    {
        return name;
    }
    /**
     * @param name the name to set
     */
    @Field("name")
    public void setName(String name)
    {
        this.name = name;
    }
    /**
     * @return the fullText
     */
    public String getFullText()
    {
        return fullText;
    }
    /**
     * @param fullText the fullText to set
     */
    @Field("fullText")
    public void setFullText(String fullText)
    {
        this.fullText = fullText;
    }
    /**
     * @return the type
     */
    public String getType()
    {
        return type;
    }
    /**
     * @param type the type to set
     */
    @Field("type")
    public void setType(String type)
    {
        this.type = type;
    }
}

前端示例

其它的根据业务需求具体扩展吧,在前端可以对查询到的数据进行一些自定义展示(关键字标红高亮,每条记录分类,点击跳转到记录详情页面)。

技术分享

Java调用solrj5.5.3接口,查询数据

标签:mem   exception   sde   ide   ipo   ext   uri   bcb   servlet   

原文地址:http://www.cnblogs.com/chenpi/p/6055061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!