借鉴博客:https://blog.csdn.net/kisscatforever/article/details/76744768

完全可以跟着他这个来,清晰明了。

一、来说说怎么使用solr这玩意

  上一篇博客说了怎么安装配置,已经安装成功了solr,并在linux上启动了solr服务,在浏览器上也打开了solr的管理界面

  现在要把solr整合到项目中来使用》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

  怎么用solr,想要使用solr必需要在solr的目录下创建一个core目录,上篇已经创建好了,没错就是他:/usr/local/solrhome/ 这个目录下的collection目录就是solr的core

  

  下一步:要在collection/conf/目录下的managed-schema文件配置一下  (我使用的solr是7.4版本,网上说其他低版本的是叫schema文件)

  vi managed-schema 文件 配置内容如下:

  1. #这个是配置ikanlyzer中文分词器,这玩意不要用4.0版本,我开始用了4.0版本然后遇到了坑:iKAnalyzer-7.x版本下载地址:https://search.maven.org/search?q=com.github.magese
    <fieldType name="text_ik" class="solr.TextField">
  2. <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
  3. </fieldType>
  4.  
  5. #这个是配置建立索引库的字段

<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="plong" 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"/>

截图如下:

  关于配置ikanlyzer中文分词器,把ikanlyzer的jar下载后,上传到:

    cd /usr/local/dev/tomcat/tomcat01/apache-tomcat-8.5.40/webapps/solr/WEB-INF/lib/ 目录下

》》》》》》在linux上配置好后然后,开始在项目中整合solr》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

导入solrj的jar包

  1.1、导入依赖包

<!-- solr客户端 -->
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
</dependency>

  1.2、solrj是干嘛用的?就像我们用redis但在java用jedis来连接redis一样,solrj是用来操作solr服务的。

2、创建一个SSM项目,在xml配置文件里配置一下注入solrj

  1. <!-- 单机版solr客户端 -->
  2. <bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
  3. <!-- 构造方法 -->
  4. <constructor-arg name="baseURL" value="http://192.168.2.120:8081/solr/collection"/>
  5. </bean>
  6.  
  7. <!-- 集群版solr客户端 -->
  8. <!-- <bean id="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer">
  9. <constructor-arg name="zkHost" value="192.168.137.13:2181,192.168.137.13:2182,192.168.137.13:2183"></constructor-arg>
  10. <property name="defaultCollection" value="collection2"></property>
  11. </bean>-->

3、在service业务层,从数据库里把数据取出来,然后通过solrj,把数据传到solr服务里

  1. package com.taotao.search.service.impl;
  2.  
  3. import java.util.List;
  4.  
  5. import org.apache.solr.client.solrj.SolrServer;
  6. import org.apache.solr.common.SolrInputDocument;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Service;
  9.  
  10. import com.taotao.common.pojo.TaotaoResult;
  11. import com.taotao.search.dao.ItemMapper;
  12. import com.taotao.search.pojo.Item;
  13. import com.taotao.search.service.ItemService;
  14.  
  15. @Service
  16. public class ItemServiceImpl implements ItemService {
  17.  
  18. //services配置文件已经配置并注入了SolrServer类,可直接用SolrServer类来操作solr服务
  19. @Autowired
  20. private SolrServer solrService;
  21.  
  22. @Autowired
  23. private ItemMapper itemMapper;
  24.  
  25. @Override
  26. public TaotaoResult importItems() throws Exception {
  27.  
  28. //查询数据库获取商品列表
  29. List<Item> itemList = itemMapper.getItemList();
  30.  
  31. //把商品list数据写入solr
  32. for(Item item : itemList){
  33. //创建文档对象
  34. SolrInputDocument document = new SolrInputDocument();
  35.  
  36. //添加域
  37. document.addField("id", item.getId());
  38. document.addField("item_title", item.getTitle());
  39. document.addField("item_sell_point", item.getSell_point());
  40. document.addField("item_price", item.getPrice());
  41. document.addField("item_image", item.getImage());
  42. document.addField("item_category_name", item.getCategory_name());
  43. document.addField("item_desc", item.getItem_des());
  44.  
  45. //写入索引库
  46. solrService.add(document);
  47.  
  48. }
  49.  
  50. //提交
  51. solrService.commit();
  52. return TaotaoResult.ok();
  53. }
  54.  
  55. }

》》》》》》所有代码都准备好了,开始测试》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

linux启动tomcat时,报错:Unknown fieldType 'long' specified on field item_price

操作如下:借鉴博客:https://blog.csdn.net/sms15732621690/article/details/79221986

1、启动linux上的tomcat,浏览器打开solr的管理界面

2、启动本地SSM项目,在浏览器上输入controller接口的地址:http://192.168.2.59:8083/taotao-search/item/importall

  controller这个接口随便写,主要是为了调用service业务层,拿到数据,把数据传到solr上

然而。。。。。java项目取数据往solr服务一丢,你以为就好?又报了个这个:

  什么原因:网上说分词器ikanalyzer的版本太低了,所以解决如下,版本下载地址:https://search.maven.org/search?q=com.github.magese

  借鉴博客:https://blog.csdn.net/guyan0319/article/details/81188977

  

最后再重启一遍:哦鸡巴K

  数据成功导入solr

solr的UI管理上查看:成功如下

。。。

04——Solr学习之项目中使用solr的更多相关文章

  1. Solr学习笔记之3、Solr dataimport - 从SQLServer导入数据建立索引

    Solr学习笔记之3.Solr导入SQLServer数据建立索引 一.下载MSSQLServer的JDBC驱动 下载:Microsoft JDBC Driver 4.0 for SQL Server ...

  2. Solr学习笔记之4、Solr配置文件简介

    Solr学习笔记之4.Solr配置文件简介 摘自<Solr in Action>. 1. solr.xml – Defines one or more cores per Solr ser ...

  3. 在进行vue的学习,项目中需要引入bootstrap、jquery的步骤。

    在进行vue的学习,项目中需要引入bootstrap.jquery的步骤. 一.引入jQuery 在当前项目的目录下(就是package.json),运行命令 cnpm install jquery ...

  4. Solr学习总结(七)Solr搜索引擎的整体架构

    经过前面一段时间的努力,终于把我所知道的关于solr 的内容都总结完了.前面讲到了solr 的安装配置,web管理后台的使用,solr 的查询参数和查询语法,还说到了solr的客户端 solrnet  ...

  5. solr学习笔记-linux下配置solr(转)

    本文地址: http://zhoujianghai.iteye.com/blog/1540176 首先介绍一下solr: Apache Solr (读音: SOLer) 是一个开源.高性能.采用Jav ...

  6. Solr学习总结(二)Solr的安装与配置

    接着前一篇,这里总结下Solr的安装与配置 1.准备 1.安装Java8 和 Tomcat9 ,java和tomcat 的安装这里不再重复.需要注意的是这两个的版本兼容问题.貌似java8 不支持,t ...

  7. 在项目中使用Solr

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...

  8. Solr学习总结(三)Solr web 管理后台

    前面讲到了Solr的安装,按道理,这次应该讲讲.net与数据库的内容,C#如何操作Solr索引等.不过我还是想先讲一些基础的内容,比如solr查询参数如何使用,各个参数都代表什么意思? 还有solr ...

  9. Solr学习总结(四)Solr查询参数

    今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事.这里先列出sol ...

随机推荐

  1. uiautomator 调试例子

    package com.bing.cn; import com.android.uiautomator.testrunner.UiAutomatorTestCase; public class Dem ...

  2. shell脚本特殊符号——单引号、双引号、反引号、反斜杠

    1. 单引号 ( '' ) 被单引号用括住的内容,将被视为单一字串. 2. 双引号 ( " " )  被双引号用括住的内容,将被视为单一字串.双引号只要求忽略大多数,具体说,括在双 ...

  3. SQL必知必会01 检索列 排序

  4. 虚拟机-Ubuntu

    1.安装 下载iso镜像文件,在VMware中创建时添加即可 2.安装tools,可以复制文件 参考:https://www.cnblogs.com/justaman/p/10545239.html ...

  5. python中使用rsa加密

    前提不多说, 为什么使用RSA加密请自行搜索,直接正为: 一. 生成公钥及私钥, 并保存 二. 使用公钥加密, 私钥解密 后记: 通常使用中, 会先对数据进行bas64加密, 再对加密后的内容使用rs ...

  6. 【day03】Xhtml

    一.HTML公共属性 1. title 提示 2. class 3. id 4. style 说明:除了 html,head,body,link,meta外其他标记都可使用的属性    二.表单  1 ...

  7. 第25课 std::thread对象的析构

    一. 线程的等待与分离 (一)join和detach函数 1. 线程等待:join() (1)等待子线程结束,调用线程处于阻塞模式. (2)join()执行完成之后,底层线程id被设置为0,即join ...

  8. jenkins+sonarqube进行代码质量检测

    JavaNeverGiveUp教程篇 用jenkins+sonarqube去检查代码是非常方便的,它能检查出代码中可能存在的一些问题,比如io流未关闭.空指针异常.死循环.代码不规范等问题. 1. 搭 ...

  9. ABA问题的产生及解决

    什么是ABA问题 在CAS算法中,需要取出内存中某时刻的数据(由用户完成),在下一时刻比较并交换(CPU保证原子操作),这个时间差会导致数据的变化. 1.线程1从内存位置V中取出A2.线程2从内存位置 ...

  10. [转帖]【译】RAID的概念和RAID对于SQL性能的影响

    [译]RAID的概念和RAID对于SQL性能的影响 https://www.cnblogs.com/VicLiu/p/11479427.html 简介 我们都听说过RAID,也经常作为SQL DBA. ...