solr学习记录(一)_健身小白的博客-程序员秘密

技术标签: solr  

先学习solr包解释
在这里插入图片描述
contrib 第三方组件
dist 发行版 汇总了其他文件夹的东西,包含一些大数据的东西
doc 开源的授权协议
examp 放案例 , 如: webapps有solr的站点文件 solr.war solr下有solr_home等等 multicore下有多collection的案例,可以直接拷贝参考

总结:文件夹内容会有重复

tomcat下solr搭建参考
https://blog.csdn.net/qq_24874939/article/details/84776847
solr的增量更新参考
https://blog.csdn.net/weixin_38970805/article/details/83144036
总结:
solr分词器参考
https://blog.csdn.net/qq_36957885/article/details/102369917

总结容易遇到的坑:
tomcat下solr搭建:我用的是solr8.4.1+tomcat9.0.3
这里主要遇到以下坑(1)在拷贝solr的相关jar包到WEB-INF\lib下的时候包可能会有重复,在这里要进行覆盖,具体原因不是很明白,在这里ext和另外metrics的4个包,还有一个javax的包,这里注意
(2)配置文件

 <env-entry>
    <env-entry-name>solr/home</env-entry-name>
    <env-entry-value>D:\Java Web\apache-tomcat-9.0.30\webapps\solr\solrhome</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
  </env-entry>

这里还是复制,我自己手打错了找了很久才找到问题。。。
完了就是要注释:这是一个关于solr的权限的

分词器这个就简单了
主要配置Ik包,以及\WEB-INF\classes 下的IKAnalyzer.cfg.xml,kgc_dict.dic,ext_stopword.dic在这里注意名字必须与xml中对得上,这里主要是用于给IK添加分词规则和一些词忽略不进行分词的

增量更新:
最坑的是在solrhome/conf /dataimport-properties放增量时间配置文件和外面的同时也要在solrhom/自己的索引文件/dataimport-properties放记录最后更新的时间的文件,这个配置文件很重要,它是用来记录当前时间与上一次修改时间的,通过它能够找出,那些,新添加的,修改的,或删除的记录在进行增量索引前,

增量更新要弄懂几个必要的属性,以及数据库建表事项,和dataimporter.properties

还有以下必须好好理解否者我是找不到为啥一分钟不能自动更新的。
这里是最重要的一点data-config.xml里面的数据
transformer 格式转化:HTMLStripTransformer 索引中忽略HTML标签
query:查询数据库表符合记录数据
deltaQuery:增量索引查询主键ID
注意这个只能返回ID字段
deltaImportQuery:增量索引查询导入数据
deletedPkQuery:增量索引删除主键ID查询
注意这个只能返回ID字段

数据库配置注意事项
1.如果只涉及添加,与修改业务,那么数据库里只需额外有一个timpstamp字段
就可以了,默认值为当前系统时间,CURRENT_TIMESTAMP(笔者的数据为mysql的)
2.如果还涉及删除业务,那么数据里就需额外再多添加一个字段isdelete,int类型的
用0,1来标识,此条记录是否被删除,当然也可以用其他字段标识,ture或false都可以

然后就是java操作solr这里先把数据导入在这里插入图片描述

直接访问solr的url

package test;


import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.impl.XMLResponseParser;
import org.apache.solr.client.solrj.response.QueryResponse;
import pojo.Hotel;

import java.io.IOException;
import java.util.List;

/**
 * @ClassName SolrjDemo
 * @Description
 * @Author hua_wen
 * @Date 2020/1/19 下午 03:23
 **/
public class SolrjDemo
{
    private static  String url="http://localhost:8080/solr/hotel";
    public static void main(String[] args) throws IOException, SolrServerException
    {
        //连接solr,return this 方法链
        HttpSolrClient client = new HttpSolrClient(url);
        client.setConnectionTimeout(1000);
        client.setParser(new XMLResponseParser());//响应解析器

        SolrQuery query = new SolrQuery("*:*");
//        query.setQuery("keyword:酒店");//q
        query.addFilterQuery("address:北京");//fq
//        query.addHighlightField(""); //高亮
        query.setSort("hotelId",SolrQuery.ORDER.desc);
        query.setStart(0);//分页
        query.setRows(10);//条数
//执行查询
        QueryResponse response = null;
        response =client.query(query);
        //解析数据
        List<Hotel> result = response.getBeans(Hotel.class);
        if(result==null)
        {
            System.out.println("no data");
        }else
        {
            for(Hotel h : result)
            {
                System.out.println(h.getHotelId()+"\t"+h.getHotelName());
            }
        }





    }
}

package pojo;

import lombok.Data;
import org.apache.solr.client.solrj.beans.Field;

import java.io.Serializable;

/**
 * @ClassName Hotel
 * @Description
 * @Author hua_wen
 * @Date 2020/1/19 下午 03:11
 **/
@Data
public class Hotel implements Serializable
{
    @Field
    private String hotelId;
    @Field
    private String hotelName;
    @Field
    private String address;
    @Field
    private String country;

}

这里要注意的是solr5和solr8获得对象的方式是不同的;sorl5直接new,sorl8是new HttpSolrClient.build(),而且solr-8.0.0和 solr-7.x都不再支持long类型。而是plong类型,这里solr8.4.1的Solr包含的字段类型(除开String)都是加了个p开头的字母。关于主键id,solr默认的是String,请参考:
https://blog.csdn.net/weixin_33672109/article/details/86010787
其他字段的版本我不太清除。还有solr8是managed-schema文件没有schema.xml这里可以改成xml然后在配置中加上

<schemaFactory class="ClassicIndexSchemaFactory"/>

这两个文件的模式是不同的详细见:
https://blog.csdn.net/weixin_39082031/article/details/78932713
managed-schema的介绍:http://www.manongjc.com/article/34126.html

查出来效果图在这里插入图片描述
并且每次访问黑窗口 tomcat服务器都会接受到请求
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44014971/article/details/103993027

智能推荐

服务器简介(二):服务器安全威胁简介、漏洞和补丁简介_安全威胁 漏洞威胁_Skye_Zheng的博客-程序员秘密

文章目录服务器安全威胁恶意程序防御方法黑客暴力破解防御方法SQL注入攻击防御方法DDoS攻击防御方法漏洞漏洞的分类漏洞存在的原因漏洞扫描常见扫描方法补丁服务器安全威胁服务器在使用过程中,存在着各种各样的安全威胁。假设服务器遭受攻击,就有可能无法正常运行。安全威胁可以分为:恶意程序黑客暴力破解SQL注入攻击DDos攻击系统漏洞恶意程序恶意程序一般是指带有攻击意图所编写的一段程...

Protocol Buffer使用转换工具将proto文件转换成Java文件流程及使用_龙旋的博客-程序员秘密

Client与Server的网络通信协议传输使用google protobuf,服务器端使用的是Java一、 Protocol Buffers protobuf全称Google Protocol Buffers,是google开发的的一套用于数据存储,网络通信时用于协议编解码的工具库。它和XML或者JSON差不多,也就是把某种数据结构的信息,以某种格式(XML,JSON)保存起来,proto...

aws-sdk-go-v2文件上传s3_zh浪浪的博客-程序员秘密

【代码】aws-sdk-go-v2文件上传s3。

uva 156 反片语 Ananagrams_a10.的博客-程序员秘密

题目:https://www.luogu.org/problem/UVA156一开始我还以为这道题有点恐怖……要用上哈希啥的……想来想去都不对劲,然后看了下题解……发现暴力sort储存就可以了……真的服了……这道题的主要思路就是,sort后用map去判重就好了,字符串存到vector里然后sort输出,这题就这么结束了#include&lt;cstdio&gt;#include&lt;io...

c语言程序设计(翁凯老师)中M2019秋C入门和进阶练习集 7--33统计素数并求和_暴走的大宝的博客-程序员秘密

7-33 统计素数并求和本题要求统计给定整数M和N区间内素数的个数并对它们求和。输入格式:输入在一行中给出两个正整数M和N(1≤M≤N≤500)。输出格式:在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。输入样例:10 31输出样例:7 143#include &lt;stdio.h&gt;int isprime(int x);int main()...

001 unique string_yanziguilai的博客-程序员秘密

以后坚持每个星期都写记到算法题,不论简单还是难,纯熟娱乐!描述:实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构)代码:#include #include #include #include bool isUnique(const std::string& vStr){ if (vStr.size()

随便推点

flutter 分享插件 : flutter_share_me___卓原的博客-程序员秘密

已经开始用flutter做项目了 , 最近项目里有个需求 , 分享应用和商品(没错,电商类app) 到facebook,twitter,以及whatsapp.在pub上找了一圈,有俩插件有分享功能, 但不符合要求,于是自己花点时间写了一个.目前只支持Android(我并没有Mac).非常欢迎大家提交pull request和反馈. 一起完善代码!支持分享到facebook , twitter...

CMD命令Program Files问题_cmd program files_边缘计算机的博客-程序员秘密

CMD命令路径问题路径问题因为CMD不支持长于八个字符的文件名,有空格的和有特殊符号的也不行。加上英文的引号,这招适用于以上几个问题可以把你的 start C:\Program Files\YUHENG\Client\ty_client.exe改为 start "C:\Program Files\YUHENG\Client\ty_client.exe"Program Files问题路径问题,在批处理中一般使用dot 8.3的文件命名规则。C:\Program F...

alpine-linux apk安装包命令集锦_Ryze丶的博客-程序员秘密

apk 包管理命令基本句法apk [options] commandapk [options] command pkgNameapk [options] command pkgName1 pkgName2升级包列表# apk update搜索包apk search pkgName例如:#apk search htop输出:htop-doc-2.0.2-r0htop-2.0.2-r0搜索并显示描述:#apk search -v -d 'htop'htop-doc-2.0

Matlab求解空间曲线的切线和法平面_matlab求切线方程_YY-fancy的博客-程序员秘密

求解空间曲线的切线和法平面若已知某空间曲线的参数方程,要求求解方程上一点的切线方程和法平面方程,则在Matlab中可用如下的求解方法:注意:求导时是对参数t进行求导带入数据时是带入对应的参数的数值先直接上码:%%syms tx1 = cos(t)*10;y1 = sin(t)*10; %得到编辑框中的字符串z1 = t*t; x2 =cos(pi/4)*10; %得到编辑框中的字符串并将其转换为数值y

odoo11在windows,ubuntu16,centos7下的安装_weixin_34138056的博客-程序员秘密

本文介绍odoo11在windows,ubuntu16,centos7下的安装,涉及安装中的依赖处理和各种工具的安装。64位windows系统环境下的安装1.安装python3.6安装程序下载地址:www.python.org/downloads/安装后在cmd中输入python --version和pip3 --version查看版本信息。如果提示命令不存在,请将python3.6和p...

MB6S-ASEMI整流桥MB6S_qyx3868的博客-程序员秘密

编辑-ZMB6S在MBS-4封装里采用的4个芯片,其尺寸都是50MIL,是一款小方桥、贴片桥堆。MB6S的浪涌电流Ifsm为30A,漏电流(Ir)为5uA,其工作时耐温度范围为-55~150摄氏度。MB6S采用GPP芯片材质,里面有4颗芯片组成。MB6S的电性参数是:正向电流(Io)为1A,反向耐压为600V,正向电压(VF)为1.0V,恢复时间(Trr)达到500ns,其中有4条引线。型号:MB6S封装:MBS-4 (SOP-4)特性:小方桥、贴片桥堆电性参数:1A 600V芯

推荐文章

热门文章

相关标签