-
一.Solr
1.什么是Solr? Solr是一个可扩展的,可部署,搜索/存储引擎,优化搜索大量以文本为中心的数据。 注:solr文档 https://www.w3cschool.cn/solr_doc/solr_doc-ltzn2fm4.html
2.Solr的优势
2.1 solr本身也可以看成数据库,(no sql类型),但它比数据库搜索速度更快,所以在项目中我们一般把搜搜的部分交给solr,就像我们在京东首页所看到的商品信息,并不是来自数据库,而是来源于sorl的索引库2.1 数据库本身不能实现分词效果,而只能使用模糊查询,但是模糊查询非常低效,查询速度比较慢,由于在实际生活中,一般搜索是用的比较多的,这样数据库压力自然就很大,所以我们就让供专业的solr来做搜索功能
———————————————— 版权声明:本文为CSDN博主「飘…」的原创文章,遵循CC 4.0
BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/luo609630199/article/details/824947083.Solr的安装
4.Solr工作原理 http://www.elecfans.com/emb/dsp/20190603950720.html
5.Solr核心core详解 https://blog.csdn.net/sswqzx/article/details/84501215
6.IK ANYLISIS中文分词器配置 https://github.com/magese/ik-analyzer-solr
7.solr admin增删改查 删:document选中xml name:“张三”
将会删除含有name:”张三”的文档删除。 增:document选json格式加入json数据
改:只要id值一样就会覆盖,通过覆盖来修改。 查:query在查询时即使倒词也能查到数据是分词器的效果。
Solr admin管理页面还有个数据更新问题,当core中数据更新时需要刷新页面否则查找不到更新后的数据。
注意:查询时,不仅查询的关键词会分词,要查询的关键词也会分词。比如查询关键词为“呵”,接下来要查询的数据是“呵”,“呵呵”和“呵呵呵”这三个,如果使用的是text_ik分词器,则首先关键词“呵”会被分词,分成一个“呵”,然后数据”呵呵“也会被分词,但只会分一个“呵呵”,而“呵呵呵”也会只会被分成一个词“呵呵”(这些都是由分词器本身的规则决定的),查找的匹配原理就是将关键词的分词与数据的分词匹配,如果匹配则返回结果,否则不返回。比如这里关键词“呵”只能匹配到数据“呵”,而匹配不到“呵呵”和“呵呵呵”,所以查找不到它们(存疑)。
在solr admin的query查询中,用符号+表示逻辑“or”。data_context:啊 + file_name:打 注意“+”号左右都有空格。
8.Solr查询流程与索引的建立 solr在执行查询时,会先通过分词器对关键词进行分析得到一组词,然后将得到的这组词和已有索引中的词进行对比,如果已有索引中有了该词,则该词的查询结果直接用已有所有中记录的结果,如果没有,则用该词作为新增索引(创建索引)并执行顺序查询并记录返回的结果(记录的是查询内容的位置)。
索引的优点是一次查询,多次使用。6.solr在命令行中的使用 <1>solr服务的开启和关闭,重启 A.在用cmd进入solr的bin目录后,执行命令solr start开启solr服务。 B.开启后,执行命令solr restart -p 8983 可以重启端口号是8983的solr服务。
C.使用命令solr stop -p 8983关闭端口号是8983的服务。 D.使用命令solr start -p
8899,以端口号8899开启solr服务。如果不指定端口号(如1),则默认使用端口8983.8.solr admin的使用 Solr admin可以用来方便的对solr进行操作。关于其操作在该文档所在目录有一个视频说明。
9.Springboot中solr的引入和使用 <1>引入 maven中添加包: org.springframework.boot
spring-boot-starter-data-solr修改application.properties配置文件,添加项:solr浏览器访问地址
spring.data.solr.host=http://localhost:8983/solr <2>使用
如果<1>步骤完成,则可以直接使用 @Resource private SolrClient solrClient;
注入solr来对solr进行操作。A)删除操作举例 String query=“good:蓝色衬衫”;
solrClient.deleteByQuery(“solr_demo”,query);
solrClient.commit(“solr_demo”);
DeleteByQuery中第一个参数是core核心名,第二个是查询语句,该core中符合该查询条件的数据都将被删除。commit是提交,执行任何solr命令最后都需要加用commit提交命令才能生效。11.从mysql导入数据到solr的流程
12.java进行ftp连接
<1> commons-net
commons-net 3.0
出现过的问题: <1>数据库连接报错:useUnicode=true应当以“;”结尾 解决方案:将&用其防转义符号&代替
url="jdbc:mysql://172.19.7.80:3306/poadb_cms?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8”<2>solr导入大量数据时报错:非法的setFetchSize()值 这里报错的原因可能是因为导入的数据量太大了,导致内存溢出
可以在data-config设置的mysql查询语句限制查询条数 比如 query=select * from
cms_news_content 本来会查询出20000多条数据导致报错 修改为 query="select * from
cms_news_content limit 2092” 就导入成功了
Solr介绍,安装,以及在Springboot项目中的初步使用
最新推荐文章于 2023-09-02 17:26:56 发布