创新实训(6)——搜索引擎solr的安装、配置与导入数据


为了实现快速查询文章内容,我使用了solr这个搜索服务器。solr的本质是一个非关系型数据库,但是它与数据库有着本质的区别。数据库的主要作用是存储数据,而solr的优势在于搜索,其查询速度非常快。

solr下载与安装

点此在官网下载安装即可
安装后的目录结构如下:
在这里插入图片描述

solr启动与关闭

进入bin目录,在cmd中输入

.\solr start

即可开启solr
在这里插入图片描述
关闭命令如下

.\solr stop -all

注意一定要加 -all
在这里插入图片描述
开启服务后,用浏览器进入http://localhost:8983/solr/#/
即可查看solr界面
在这里插入图片描述

创建core文件夹

每一个core代表一个索引库,下面我们尝试建立user和article这两个core
在bin目录下,输入如下命令

.\solr create -c corename

其中corename为要创建的core的名称,比如我们创建user,创建完成后,打开文件夹.\server\solr可以看到下面多了一个user文件夹,就是我们刚才创建的core。
solr界面上也可以找到user
在这里插入图片描述
关于core的详细信息,可以参照这个博客:https://blog.csdn.net/sswqzx/article/details/84501215

连接数据库

mysql

连接mysql数据库相对来说是比较简单的

  1. 添加驱动依赖包
    将mysql驱动依赖包添加到.\server\solr-webapp\webapp\WEB-INF\lib中,
    这里我用的是mysql-connector-java-8.0.23.jar
  2. 配置dataimporthandler相关包
    找到.\dist下的solr-dataimporthandler-7.7.3.jar和solr-dataimporthandler-extras-7.7.3.jar两个包,把他们复制到.\server\solr-webapp\webapp\WEB-INF\lib目录下
    在这里插入图片描述
  3. 添加数据库配置
    找到.\server\solr\corename\conf下的solrconfig.xml并添加配置
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> 
        <lst name="defaults">  
              <str name="config">data-config.xml</str>  
        </lst>  
</requestHandler> 
  1. 创建data-config.xml数据库连接配置
    在目录.\server\solr\corename\conf下新建一个文件data-config.xml并添加如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
    <dataSource 
    type="JdbcDataSource" 
    driver="com.mysql.jdbc.Driver" 
    url="jdbc:mysql://localhost:3306/***" 
    user="***"
    password="***" /> 
    <document>
        <entity name="userEntity" query="select 
        uid,
        username,
        password 
        from user">
            <field column="uid" name="user_id"/> 
            <field column="username" name="user_name"/> 
            <field column="password" name="user_password"/> 
        </entity>
    </document>
</dataConfig>

数据库的用户名和密码,数据库名称改成自己所需的内容
query需要输入想要查询的内容
field中的column字段为数据库中的字段名称,name字段可以自定义,是solr字段的名称

  1. 配置managed-schema
    打开文件.\server\solr\corename\conf下的managed-schema,并在其中的标签里面添加如下配置:
   <field name="user_id" type="string" indexed="true" stored="true"/>
   <field name="user_name" type="string" indexed="true" stored="true"/>
   <field name="user_password" type="string" indexed="true" stored="true"/>

注意: name字段必须和userEntity中的name字段相同

  • 导入数据
    在这里插入图片描述
    在solr中选定上图的内容后,点击execute
    refresh后,
    在这里插入图片描述
    左侧选择query,查询导入的数据
    在这里插入图片描述

mongodb

mongodb数据导入到solr中,可以有两种方法
①使用mongo-connector
②使用solr-mongo-dataimport
这里我们使用solr-mongo-dataimport
以导入article为例

  1. 文件配置
    在./server/solr-webapp/webapp/WEB-INF/lib中导入如下jar包:
  2. 配置solrconfig.xml
    与上面mysql不同的是,需要添加以下内容:
  <lib dir="./lib/" regex="SolrMongoImporter.*\.jar"/>
  <lib dir="./lib/" regex="mongo-java-driver.*\.jar"/>

否则jar包不能正常识别
再添加和上面相同的内容

    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> 
        <lst name="defaults">  
              <str name="config">data-config.xml</str>  
        </lst>  
    </requestHandler> 
  1. 配置data-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
    <dataSource
    name="MongoSource" 
    type="MongoDataSource" 
    database="***"
    host="***" 
    port="***"/> 
    <document>
        <entity name="Article" 
            processor="MongoEntityProcessor"
            query="{'bookname':'111'}"
            collection="article"
            datasource="MongoSource"
            transformer="MongoMapperTransformer"
            mapMongoFields="true">
            <field column="article_id" name="article_id" mongoField="_id"/> 
            <field column="article_title" name="article_title" mongoField="title"/> 
            <field column="article_bookname" name="article_bookname" mongoField="bookname"/> 
            <field column="article_articleAuthor" name="article_articleAuthor" mongoField="articleAuthor"/>
            <field column="article_content" name="article_content" mongoField="content"/> 
            <field column="article_imgurl" name="article_imgurl" mongoField="imgurl"/> 
            <field column="article_notes" name="article_notes" mongoField="notes"/> 
            <field column="article_XML" name="article_XML" mongoField="XML"/> 
            <field column="article_annotation" name="article_annotation" mongoField="annotation"/> 
            <field column="article_page" name="article_page" mongoField="page"/>  
        </entity>
    </document>
</dataConfig>

database是要导入的数据库名称,host和port按需输入即可
query必须是json格式
field中细节与上面不同,column和name的内容无所谓,但是mongoField既要与数据库中的字段相同,也要与managed-schema中的name相同

  1. 配置managed-schema
   <field name="_id" type="string" indexed="true" stored="true" />
   <field name="title" type="string" indexed="true" stored="true"/>
   <field name="bookname" type="string" indexed="true" stored="true"/>
   <field name="articleAuthor" type="string" indexed="true" stored="true"/>
   <field name="content" type="string" indexed="true" stored="true"/>
   <field name="imgurl" type="string" indexed="true" stored="true"/>
   <field name="notes" type="string" indexed="true" stored="true"/>
   <field name="XML" type="string" indexed="true" stored="true"/>
   <field name="annotation" type="string" indexed="true" stored="true"/>
   <field name="page" type="string" indexed="true" stored="true"/>

name必须与mongoField相同

  1. 导入数据
    导入方法与mysql相同,查询结果如下:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

来看看小兔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值