Solr是一个全局站内搜索引擎,可以快速的搜索出结果。

Solr依赖于tomcat,把Solr的war包放到tomcat中即可运行。

  • 使用solr,需要在solr的schema.xml中配置solr与java的映射关系,便于存放数据,在schema.xml中配置如下关系。

      <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" />
    <field name="item_desc" type="text_ik" indexed="true" stored="false" /> <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
    <copyField source="item_title" dest="item_keywords"/>
    <copyField source="item_sell_point" dest="item_keywords"/>
    <copyField source="item_category_name" dest="item_keywords"/>
    <copyField source="item_desc" dest="item_keywords"/>

Solr与Spring的集成

  • 添加支持solr客户端的依赖

      <!-- solr客户端 -->
    <dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>4.10.3</version>
    </dependency>
  • 在Spring中配置Solr的bean

      <bean id="solrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
    <constructor-arg name="baseURL" value="http://47.95.196.183:8080/solr/"></constructor-arg>
    </bean>
  • 向solr中添加数据,先从数据库中查询出所有有用信息,然后放到solr中

      //导入solrServer对象
    @Autowired
    private SolrServer solrServer; //查询商品列表
    List<SolrItem> list = itemMapper.getItemList();
    //向索引库中添加文档
    for (SolrItem solrItem : list) {
    //创建文档对象
    SolrInputDocument document = new SolrInputDocument();
    document.setField("id", solrItem.getId());
    document.setField("item_title", solrItem.getTitle());
    document.setField("item_sell_point", solrItem.getSell_point());
    document.setField("item_price", solrItem.getPrice());
    document.setField("item_image", solrItem.getImage());
    document.setField("item_category_name", solrItem.getItem_cat_name());
    document.setField("item_desc", solrItem.getItem_desc());
    //向索引库中添加文档
    solrServer.add(document);
    }
    //提交修改
    solrServer.commit();

这样,数据就全部添加到Solr中了。

  • 从Solr中查询数据

      @Autowired
    private SolrServer solrServer;//导入solrServer对象 //创建查询对象
    SolrQuery solrQuery = new SolrQuery();
    //设置查询条件
    //solrQuery.set("q","");
    solrQuery.setQuery(queryString);
    //设置分页
    solrQuery.setStart((int) ((page - 1) * pageSize));
    solrQuery.setRows(pageSize.intValue());
    //高亮设置
    solrQuery.setHighlight(true);
    //设置高亮显示的域
    solrQuery.addHighlightField("item_title");
    //高亮显示的前缀
    solrQuery.setHighlightSimplePre("<span style='color:red'>");
    //高亮显示的后缀
    solrQuery.setHighlightSimplePost("</span>");
    //设置默认搜区域
    solrQuery.set("df", "item_keywords"); //根据查询条件查询索引库
    QueryResponse response = solrServer.query(solrQuery);
    //从response中取查询结果
    SolrDocumentList list = response.getResults();
    //查询结果list
    List<SolrItem> itemList = new ArrayList<>();
    //遍历查询结果
    for (SolrDocument solrDocument : list) {
    //创建一商品对象
    SolrItem item = new SolrItem();
    item.setId(Long.parseLong((String)solrDocument.get("id")));
    //取高亮显示
    Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
    List<String> hList = highlighting.get(solrDocument.get("id")).get("item_title");
    String title = "";
    //判断是否有高亮信息
    if (hList != null && hList.size() > 0) {
    title = hList.get(0);
    } else {
    title = (String) solrDocument.get("item_title");
    }
    item.setTitle(title);
    item.setSell_point((String) solrDocument.get("item_sell_point"));
    item.setPrice((long) solrDocument.get("item_price"));
    item.setImage((String) solrDocument.get("item_image"));
    //添加到商品列表
    itemList.add(item);
    }

最后,将查询的结果放入到itemList中返回。


  • 报错信息:在solr中提示没有item_title字段,后发现是在第一步中配置的映射关系没有生效,仔细检查发现是在创建classes文件夹的时候写成了calsses导致配置没有生效。。重新配置生效即可添加数据并调用接口。

Solr的配置和在java中的使用的更多相关文章

  1. java中eclipse的安装和JDK的环境变量的配置以及记事本的使用

    2020-04-09 23:26:15 学习java的第一步当然就是环境配置了,java中的配置作为小白刚刚开始肯定会有点一点晕头转向的,开没等开始入门呢!就要准备放弃了.哈哈哈哈,没关系的,都是这么 ...

  2. 真分布式SolrCloud+Zookeeper+tomcat搭建、索引Mysql数据库、IK中文分词器配置以及web项目中solr的应用(1)

    版权声明:本文为博主原创文章,转载请注明本文地址.http://www.cnblogs.com/o0Iris0o/p/5813856.html 内容介绍: 真分布式SolrCloud+Zookeepe ...

  3. 在IntelliJ IDEA 13中配置OpenCV的Java开发环境

    准备工作: 下载IDEA 13(这里以版本13为例,后面简称IDEA): 下载Java JDK(用于配置基本的Java开发环境): 下载OpenCV 2.4.9(这里以版本2.4.9为例,据这篇文章说 ...

  4. java中path和CLASSPATH的配置和意义解析

    原文链接 https://blog.csdn.net/eclipse_yin/article/details/51447169 一.JDK的安装和基本配置 JDK的安装: 1) 如果想要获得JDK,那 ...

  5. Spring装配bean(在java中进行显式配置)

    1.简单介绍 Spring提供了三种装配机制: 1.在XML中进行显式配置: 2.在java中进行显式配置: 3.隐式的bean发现机制和自动装配. 其中,1和3项在项目中经常使用,而在java中进行 ...

  6. java中常量文件的配置与读取

    java中常量文件的配置与读取: package com.floor.shop.user.util; import java.io.InputStream; import java.io.InputS ...

  7. Java中多环境Logback配置与ELK日志发送

    Java中多环境Logback配置与ELK日志发送   一.项目基于SpringBoot实现,引入SpringBoot相关库后,本文还要讲上传到ELK的Logstash,所以需要在pom.xml中加入 ...

  8. Java中的 JDK下载和环境配置(方式一)

    第一步:需要安装JDK. JDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151 ...

  9. Java中classpath配置

    Java中classpath配置 一.DOS常用命令 二.DOS常用命令实例 2.1 转换目录 cd 1.6* 2.2 删除文件 del 删除文件(windows删除从里往外删) del *.txt ...

随机推荐

  1. Kubernetes fluentd+elasticsearch+kibana

    前提:dns服务,k8s集群 下载kubernetes,并解压 https://github.com/kubernetes/kubernetes/releases tar zxvf kubernete ...

  2. MySQL数据转移至SQL Server详解

    最近有个活是mysql数据转移到sql server 2012,直接手动转工作量太大,发现网上有工具教程,则记录一下. 一.安装MySQL ODBC驱动为MySQL安装Connector/ODBC驱动 ...

  3. SSH 连接慢

    关闭连接时的 DNS 解析 # 编辑配置文件,修改如下配置项 vim /etc/ssh/sshd_config GSSAPIAuthentication no UseDNS no # 重启服务 sys ...

  4. 转载:在做datatable时候查询数据和条数只用一次sql就可以解决需求

    前言:最近用datatable处理数据比较多,所以在使用时候想提升性能 select * from t_hr_leave SELECT FOUND_ROWS() //返回查询记录的总数 select ...

  5. 通过<meta>标签指定IE的文档模式实现CSS3兼容

    今天发现之前做好的一个页面在IE中打开显示的效果不正常,本地和服务器上显示的是两种不同的样式. 经过确认文档内容和CSS都是一样的. 通过IE F12(开发人员工具)发现不正常的样式 浏览器文档模式自 ...

  6. console.log()在IE下不兼容问题解决

    样式改的顺风顺水,到了IE果然出了问题(奇怪,我为什么要说‘果然’?),如果在JS文件中写了console.log()方法,样式就会有缺陷,但是打开IE下的开发者工具就没问题(IE这都是什么鬼!!), ...

  7. Java装箱的 " == " 的问题

    装箱和拆箱  packagecom.xzj.Test; ​ /* * @ author thisxzj * @ create 2019-02-25 10:56 */ publicclassBase{  ...

  8. js关联数组

    标准javascript 是内含支持hash关联数组,经查找资料并测试,有关标准javascript内含的hash关联数组操作备忘如下 1.Hash关联数组定义 // 定义空数组 myhash = { ...

  9. centos7.2下部署 python3

    安装Python3 1.环境准备 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel read ...

  10. php、apache、nginx、线程、进程

    最近在学swoole,发现里面设计好多操作系统里面的概念,这些基础知识正是自己欠缺的.根基不牢的高楼大厦,犹如空中楼阁,随时都要崩塌,早发现早治疗哈哈^_^. 一.概念 1) 进程:是指正在运行的一个 ...