Solr的安装与数据导入

搜索技术的引用

select * from t_goods where name like '%关%键%词%'会导致索引失效,进而全表扫描

什么是solr

solr是用Java编写,运行在Servlet容器的一个独立的全文搜索服务器。Solr采用了Lucene Java搜索库为核心的全文索引和搜索,并具有类似REST的HTTP/XML和JSON的API。solr强大的外部配置功能使得无需进行Java编码,便可以对其进行调整以适应多种类型的应用程序。

安装使用

1.下载solr

官方仓库:https://archive.apache.org/dist/lucene/solr/

(这里用的是7.7.3版本)

2.使用内置Jetty测试启动

Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接)

[root@izuf6i2hwrq3qrn5zdyjhoz bin]# ls
init.d  install_solr_service.sh  oom_solr.sh  post  solr  solr.cmd  solr.in.cmd  solr.in.sh
[root@izuf6i2hwrq3qrn5zdyjhoz bin]# ./solr start

打开浏览器,访问地址:http://你的ip:8983/solr/#

3.Tomcat环境运行

需要环境:

  • JDK1.8
  • tomcat 9.0

找到solr文件夹下的webapp文件

[root@izuf6i2hwrq3qrn5zdyjhoz solr-webapp]# ls
webapp
[root@izuf6i2hwrq3qrn5zdyjhoz solr-webapp]# pwd
/root/software/solr-7.7.3/server/solr-webapp

复制到tomcat下,重命名为solr

[root@izuf6i2hwrq3qrn5zdyjhoz solr]# pwd
/root/tomcat/apache-tomcat-9.0.35/webapps/solr

**(重要)**将solr-7.7.3/server/lib/ext下的所有jar包,以及solr-7.7.3/server/lib/下以metrics开头的jar、gmetric4j-1.0.7.jar复制到apache-tomcat-9.0.35/webapps/solr/WEB-INF/lib下

在WEB-INF中,新建classes文件夹,将solr-7.7.3/server/resources下的log4j2-console.xml、log4j2.xml拷贝进去。

创建Solr CoreAdmin管理

创建slor home目录(solr_home)

[root@izuf6i2hwrq3qrn5zdyjhoz software]# ls
solr-7.7.3  solr-7.7.3.tgz  solr_home

拷贝solr-7.7.3/server/solr下所有的文件、文件夹到solr_home目录下

拷贝solr-7.7.3下contrib和dist文件夹到solr_home下

在solr_home下创建core_demo文件夹,并拷贝solr_home\configsets\sample_techproducts_configs\目录下conf文件夹至solr_home\core_demo下

修改solr_home\demo_core\conf\solrconfig.xml文件

修改(添加)tomcat\webapps\solr\WEB-INF中的web.xml文件

其中env-entry-value值为solr_home对应值,即solr home的绝对路径

<env-entry>
    <env-entry-name>solr/home</env-entry-name>
    <env-entry-value>/root/software/solr_home</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
  </env-entry>

注释掉以下几行

<!-- Get rid of error message
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Disable TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint/>
  </security-constraint>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Enable everything but TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method-omission>TRACE</http-method-omission>
    </web-resource-collection>
  </security-constraint>
  -->

启动tomcat,访问http://你的ip:8080/solr/index.html

  • Dashboard:显示该solr实例开始启动运行的时间、版本、系统资源、jvm信息等

  • Logging:显示solr运行出现的异常或错误

  • Core Admin:Solr Core的管理界面,在这里可以添加管理solr core实例。

    Add Core是添加core:主要是在对应的文件夹里生成一个core.properties文件

    name:给core起的名字;
    instanceDir:与我们在配置solr到tomcat里时的solr_home里新建的core文件夹名一致;
    dataDir:确认Add Core时,会在new_core目录下生成名为data的文件夹
    config:new_core下的conf下的config配置文件(solrconfig.xml)
    schema: new_core下的conf下的schema文件(schema.xml)

  • java properties:Solr在JVM 运行环境中的属性信息,包括类路径、文件编码、jvm内存设置等信息。可查看到java相关的一些属性的信息

  • Thread Dump:显示Solr Server中当前活跃线程信息,同时也可以跟踪线程运行栈信息。

  • **(重点)**Core selector:需要在Core Admin里添加了core后才有可选项

  • Analysis:通过此界面可以测试索引分析器和搜索分析器的执行情况
  • Dataimport:可以定义数据导入处理器,从关系数据库将数据导入到Solr索引库中。
  • Document:通过/update表示更新索引,solr默认根据id(唯一约束)域来更新Document的内容,如果根据id值搜索不到id域则会执行添加操作,如果找到则更新。通过此菜单可以创建索引、更新索引、删除索引等操作
  • Query:通过/select执行搜索索引,必须指定“q”查询条件方可搜索。

solr core的配置

在http://你的ip:8080/solr/index.html中添加core_demo

solr导入数据

查看core

Dataimport导入数据:是将数据库中数据通过sql语句方式导入到solr索引库中

  1. 添加jar包:将solr-7.7.3/dist下的solr-dataimporthandler-7.7.3.jar和solr-dataimporthandler-extras-7.7.3.jar以及solr-7.7.3/contrib/analysis-extras/lucene-libs下的所有包、mysql-connector-java.jar拷贝到webapps/solr/WEB-INF/lib下面

  2. 配置中文分词器:修改core下面的conf文件夹里的managed-schema文件

    在文件的最下面插入中文分词器

    <!-- ChineseAnalyzer -->
        <fieldType name="solr_cnAnalyzer" class="solr.TextField" positionIncrementGap="100">
          <analyzer type="index">
            <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
          </analyzer>
          <analyzer type="query">
            <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
          </analyzer>
        </fieldType>
    
  3. 修改conf文件夹下的solrconfig.xml文件,添加dataimport

    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
        <str name="config">data-config.xml</str>
        </lst>
    </requestHandler>
    
  4. 创建data-config.xml:作用是数据库连接相关信息,SQL查询以及结果映射对应域中

    <?xml version="1.0" encoding="UTF-8" ?>
    <dataConfig>
       <dataSource type="JdbcDataSource" driver="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://ip:3306/solr_test" user="root" password="***"/>
       <document>
                <entity name="tb_solr_1" pk="id" query="select * from tb_solr_1">
                    <field column="id" name="id"/>
                    <field column="name" name="filename"/>
                </entity>
        </document>
    </dataConfig>
    
  5. 定义域,修改managed-schema文件,配置其Field域,在最下端

    <field name="filename" type="solr_cnAnalyzer" indexed="true" stored="true" required="true"/>
    

    filename需要模糊查询(中文分词),所以类型为solr_cnAnalyzer

  6. 启动tomcat,进入core中的Dataimport执行execute

    然后进入Query执行Execute Query

    至此,数据库连接成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值