Solr7.X Linux 安装及数据导入

solr 读音应该是叫 “so lar”

之前写过一篇介绍solr的文章https://zhangdianlei.github.io/2018/09/11/Apache-Solr/ ,这里就不再啰嗦solr的事情了。今天搞了一天的solr,现在记录一下

solr安装及使用:

  1. Linux环境下安装
  2. 添加环境变量
  3. 启动solr,简单了解solr
  4. 新建Core
  5. 从数据库导入数据
  6. 数据查询

下面详解介绍每一部分。

Linux环境下安装solr

要求: 电脑上已经装了jdk8+

下载:建一个工作文件夹,执行下载命令:

wget http://mirrors.shuosc.org/apache/lucene/solr/7.5.0/solr-7.5.0.tgz

解压安装:

tar -zxvf solr-7.5.0.tgz

添加环境变量

将solr添加到环境变量,可以快速的启动、重启、关闭等,非常有必要。

编辑文件:

vim /etc/profile

下面是我的配置:

export JAVA_HOME=/root/software/jdk1.8.0_181
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

# solr environment
export SOLR_INSTALL_HOME=/root/solr-7.4.0
export PATH=$SOLR_INSTALL_HOME/bin:$PATH

然后执行:

source /etc/profile

使得配置文件生效

然后可以执行以下命令验证配置成功:

solr start

启动solr,简单了解solr

启动、重启、关闭命令:

solr start
solr restart
solr stop

有时系统因安全问题考虑,可能需要在命令后加上-force参数

solr启动后,访问 http://ip:8983/solr之后,将访问web管理界面:

新建Core

每个人新建Core的方法,和配置方法都不一样,在此,仅记录我的创建和配置方法。

先在 Core Admin --> Add Core确认添加,会报一个找不到文件的错误,然后这时候,需要将标准配置文件,添加到刚才新增的Core下面,标准配置文件在 ~SolrDir/server/solr/configsets/_default/conf下面,假设当前目录为solr根文件夹下,新的Core名字为new_core,执行:

cp -r server/solr/configsets/_default/conf server/solr/new_core

新建Core完成!

导入数据库数据

在上一步导入的Conf目录下,修改以下配置:

solrconfig.xml下添加以下配置,添加位置大约在 680行,SearchHandler配置上面:

 <!-- Request Handlers
       http://wiki.apache.org/solr/SolrRequestHandler
       Incoming queries will be dispatched to a specific handler by name
       based on the path specified in the request.

       If a Request Handler is declared with startup="lazy", then it will
       not be initialized until the first request that uses it.
    -->

  <!-- add property -->
  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
    <lst name="defaults">  
        <str name="config">data-config.xml</str>  
    </lst>
  </requestHandler>
  
  <!-- SearchHandler
       http://wiki.apache.org/solr/SearchHandler
       For processing Search Queries, the primary Request Handler
       provided with Solr is "SearchHandler" It delegates to a sequent
       of SearchComponents (see below) and supports distributed
       queries across multiple shards
    -->

data-config.xml是引用的配置文件,需要新建这个配置文件。在linux下,直接用vim新建即可,vim data-config.xml,然后 wq保存退出即可。

该文件的配置如下,连接的是postgresql,如果是连mysql的话,需要改一下driver即可(com.mysql.jdbc.Driver):

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
    <dataSource name="source"
    type="JdbcDataSource"
    driver="org.postgresql.Driver"
    url="jdbc:postgresql://localhost:3306/test_db"
    user="root"
    password="abc123"
    />
    <document>
        <entity name="person"
            pk="id"
            dataSource="source"
            query="select * from person"
            deltaImportQuery="select * from person where id = '${dih.delta.id}'"
            deltaQuery="select id from person where update_date > '${dataimporter.last_index_time}' and status_flag = 'success'">
            <field column="id" name="id"/>
            <field column="update_date" name="update_date"/>
        </entity>
    </document>
</dataConfig>

这里,需要添加用到的驱动包,用到什么驱动下载什么,可以从mvn库下载(https://mvnrepository.com/),将数据连接驱动包下载之后,放到solr\server\solr-webapp\webapp\WEB-INF\lib下,然后将solr{home}\dist目录下的:solr-dataimporthandler-7.4.0.jar和solr-dataimporthandler-extras-7.4.0.jar这两个jar包拷贝到 solr\server\solr-webapp\webapp\WEB-INF\lib下。

简单说一下这三个query的作用:

query: 在全量导入时使用

**deltaImportQuery:**在增量导入时执行,其中的id来自于 deltaQuery 的查询结果。

在这之后,需要配置managed-schema文件,与数据库进行映射,在117行附近,添加与数据库的映射,具体添加规则,不详细写了。

<field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
<field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>

<!-- add propertity -->
<field name="invoice_type" type="text_ik" indexed="true" stored="true" />
<field name="invoice_code" type="string" indexed="true" stored="true" />
<field name="invoice_num" type="string" indexed="true" stored="true" />

为了查询的效果,需要再配一下中文分词器,将下面配置放到其中,位置大约在358行:

 <fieldType name="text_gen_sort" class="solr.SortableTextField" positionIncrementGap="100" multiValued="true">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

    <!-- add propertity -->
    <fieldType name="text_ik" class="solr.TextField">  
        <analyzer type="index" useSmart="false"
            class="org.wltea.analyzer.lucene.IKAnalyzer" />
        <analyzer type="query" useSmart="true"
            class="org.wltea.analyzer.lucene.IKAnalyzer" />
    </fieldType> 

当然,需要将中文分词包加到项目中,参考这篇文章吧: https://blog.csdn.net/guyan0319/article/details/81188977

数据查询

在solr的web管理界面上,可以执行测试query,具体的每个字段如何查,参考这篇文章:https://blog.csdn.net/sxg0205/article/details/81317563

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值