04——Solr学习之项目中使用solr
借鉴博客: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 文件 配置内容如下:
#这个是配置ikanlyzer中文分词器,这玩意不要用4.0版本,我开始用了4.0版本然后遇到了坑:iKAnalyzer-7.x版本下载地址:https://search.maven.org/search?q=com.github.magese
<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="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
<!-- 单机版solr客户端 -->
<bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
<!-- 构造方法 -->
<constructor-arg name="baseURL" value="http://192.168.2.120:8081/solr/collection"/>
</bean> <!-- 集群版solr客户端 -->
<!-- <bean id="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer">
<constructor-arg name="zkHost" value="192.168.137.13:2181,192.168.137.13:2182,192.168.137.13:2183"></constructor-arg>
<property name="defaultCollection" value="collection2"></property>
</bean>-->
3、在service业务层,从数据库里把数据取出来,然后通过solrj,把数据传到solr服务里
package com.taotao.search.service.impl; import java.util.List; import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.common.SolrInputDocument;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.taotao.common.pojo.TaotaoResult;
import com.taotao.search.dao.ItemMapper;
import com.taotao.search.pojo.Item;
import com.taotao.search.service.ItemService; @Service
public class ItemServiceImpl implements ItemService { //services配置文件已经配置并注入了SolrServer类,可直接用SolrServer类来操作solr服务
@Autowired
private SolrServer solrService; @Autowired
private ItemMapper itemMapper; @Override
public TaotaoResult importItems() throws Exception { //查询数据库获取商品列表
List<Item> itemList = itemMapper.getItemList(); //把商品list数据写入solr
for(Item item : itemList){
//创建文档对象
SolrInputDocument document = new SolrInputDocument(); //添加域
document.addField("id", item.getId());
document.addField("item_title", item.getTitle());
document.addField("item_sell_point", item.getSell_point());
document.addField("item_price", item.getPrice());
document.addField("item_image", item.getImage());
document.addField("item_category_name", item.getCategory_name());
document.addField("item_desc", item.getItem_des()); //写入索引库
solrService.add(document); } //提交
solrService.commit();
return TaotaoResult.ok();
} }
》》》》》》所有代码都准备好了,开始测试》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
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的更多相关文章
- Solr学习笔记之3、Solr dataimport - 从SQLServer导入数据建立索引
Solr学习笔记之3.Solr导入SQLServer数据建立索引 一.下载MSSQLServer的JDBC驱动 下载:Microsoft JDBC Driver 4.0 for SQL Server ...
- Solr学习笔记之4、Solr配置文件简介
Solr学习笔记之4.Solr配置文件简介 摘自<Solr in Action>. 1. solr.xml – Defines one or more cores per Solr ser ...
- 在进行vue的学习,项目中需要引入bootstrap、jquery的步骤。
在进行vue的学习,项目中需要引入bootstrap.jquery的步骤. 一.引入jQuery 在当前项目的目录下(就是package.json),运行命令 cnpm install jquery ...
- Solr学习总结(七)Solr搜索引擎的整体架构
经过前面一段时间的努力,终于把我所知道的关于solr 的内容都总结完了.前面讲到了solr 的安装配置,web管理后台的使用,solr 的查询参数和查询语法,还说到了solr的客户端 solrnet ...
- solr学习笔记-linux下配置solr(转)
本文地址: http://zhoujianghai.iteye.com/blog/1540176 首先介绍一下solr: Apache Solr (读音: SOLer) 是一个开源.高性能.采用Jav ...
- Solr学习总结(二)Solr的安装与配置
接着前一篇,这里总结下Solr的安装与配置 1.准备 1.安装Java8 和 Tomcat9 ,java和tomcat 的安装这里不再重复.需要注意的是这两个的版本兼容问题.貌似java8 不支持,t ...
- 在项目中使用Solr
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...
- Solr学习总结(三)Solr web 管理后台
前面讲到了Solr的安装,按道理,这次应该讲讲.net与数据库的内容,C#如何操作Solr索引等.不过我还是想先讲一些基础的内容,比如solr查询参数如何使用,各个参数都代表什么意思? 还有solr ...
- Solr学习总结(四)Solr查询参数
今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事.这里先列出sol ...
随机推荐
- odoo 新建模块命令
python odoo-bin scaffold academy myaddons 自动初始化所有的配置信息: python odoo-bin --addons=addons,"/home/ ...
- ABP 相关基础知识
好文章: https://www.cnblogs.com/1zhk/p/5268054.html 关键字:Internal 限定的是只有在同一程序集中可访问,可以跨类 关键字:volatile 一个变 ...
- 复杂模拟 | 1095 模拟N个学生有K个志愿填M个学校
妈的智障 #include <stdio.h> #include <memory.h> #include <math.h> #include <string& ...
- nginx日志说明
一.日志说明 nginx日志主要有两种:访问日志和错误日志.访问日志主要记录客户端访问nginx的每一个请求,格式可以自定义:错误日志主要记录客户端访问nginx出错时的日志,格 式不支持自定义.两种 ...
- 第02组 Beta冲刺(4/4)
队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:了解整个游戏的流程 GitHub签入记录 接下来的计划:继续完成游戏 还剩下哪些任务:完成游戏 燃尽图 遇到的困难:没有美术比较好的 ...
- ES6中ArrayBuffer与计算机字节序
1.什么事字节序? 字节序指的是数值在内存中的表示方式. const buffer = new ArrayBuffer(16); const int32View = new Int32Array(bu ...
- 2017 ACM/ICPC Asia Regional Shenyang Online E number number number 题解
分析: 当n=1时ans=4=f(5)-1; n=2,ans=12=f(7)-1; n=3,ans=33=f(9)-1; 于是大胆猜想ans=f(2*k+3)-1. 之后用矩阵快速幂求解f(n)即可, ...
- nginx 指向本地目录
# 必须配置此目录 location /upload { root D:\\upload\\; rewrite break; }
- Turbo码基本框架
1. 基本原理 1.1 定义 1.2 分量码设计 2. 编码方法 2.1 交织器的设计 2.2 分量编码器 2.3 删余矩阵及复用 3. 译码方法和算法 3.1 迭代译码 3.2 MAP类算法 3.3 ...
- 【09】Jenkins:Pipeline 补充
写在前面的话 我们在使用普通的构建任务的时候使用了 Sonar 做代码质量管理,也使用了 Publish Over SSH 插件中更新上线,但是我们在 Pipeline 怎么使用他们呢. 如果你没有查 ...