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服务器都会接受到请求
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

健身小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值