关于solr的搭建详见上一篇的随笔

步骤1:

在webapps中solrhome下新建一个文件夹名字叫做mynode(名字不固定,可以随便取,但是这个名字在后面的配置中会有所关联。)然后在mynode文件下新建一个名字叫做conf的文件夹(这个文件名字最后不要改。)然后把官网下下来的solr项目中solr-6.0.0\server\solr\configsets\data_driven_schema_configs\conf下的所有东西复制到conf中去。(注意不要复制错!)最后把solr-6.0\solr-6.0.0\example\example-DIH\solr\db\conf下的admin-extra.html, admin-extra.menu-bottom.html ,admin-extra.menu-top.html三个文件也复制到conf中去。

步骤2:

把mysql所需的jar包和solr-6.0\solr-6.0.0\dist下的solr-dataimporthandler-6.0.0.jar和solr-dataimporthandler-extras-6.0.0.jar都复制到项目WEB-INF\lib下。然后在solrconfig.xml文件中加入<lib dir="D:/编程工具/tomcat/apache-tomcat-8.0.32-windows-x64/apache-tomcat-8.0.32/webapps/solr/WEB-INF/lib/" regex=".*\.jar" />(就是把WEB-INF\lib里面的jar包配置到项目中,我这里用的是绝对地址。这段代码大约在solrconfig.xml的70多行处,前面有一堆类似的代码。)

记得将mysql驱动包mysql-connector-java-5.1.18-bin.jar加入到“/tomcat/apache-tomcat-8.0.32-windows-x64/apache-tomcat-8.0.32/webapps/solr/WEB-INF/lib/”目录下。

步骤3:

确定我们需要导入的mysql数据库表。

步骤4:

1、在conf下新建data-config.xml文件。里面内容如下

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.1.12:33060/in_gs_0809" user="admin" password="123456"
batchSize="-1"/>
  
<document>
<entity name="clue" pk="clue_id" dataSource="source1"
query="select * from clue"
deltaImportQuery="select * from clue where clue_id='${dih.delta.clue_id}'"
deltaQuery="select clue_id from clue where gmt_modified> '${dataimporter.last_index_time}'">
   
<field column="clue_id" name="id"/>
<field column="informer_id" name="informer_id"/>
<field column="title" name="title"/>
<field column="content" name="content"/> <field column="latitude" name="latitude"/>
<field column="longitude" name="longitude"/>
<field column="attachment" name="attachment"/>
<field column="clue_status" name="clue_status"/> <field column="del_flag" name="del_flag"/>
<field column="gmt_create" name="gmt_create"/>
<field column="create_uid" name="create_uid"/>
<field column="gmt_modified" name="gmt_modified"/>
<field column="modified_uid" name="modified_uid"/>
</entity>
  
</document>
</dataConfig>

说明:

dataSource是数据库数据源。Entity就是一张表对应的实体,pk是主键,query是查询语句。Field对应一个字段,column是数据库里的column名,后面的name属性对应着Solr的Filed的名字(clue_id对应的是schema.xml中的id)。其中solrdata是数据库名,clue是表名。

其中deltaQuery是增量索引,原理是从数据库中根据deltaQuery指定的SQL语句查询出所有需要增量导入的数据的ID号。然后根据deltaImportQuery指定的SQL语句返回所有这些ID的数据,即为这次增量导入所要处理的数据。核心思想是:通过内置变量“${dih.delta.clue_id}”和 “${dataimporter.last_index_time}”来记录本次要索引的id和最近一次索引的时间。

2、在solrconfig.xml的  <requestHandler name="/select" class="solr.SearchHandler">之上添加

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  <lst name="defaults">
  <str name="config">data-config.xml</str>
  </lst>
 </requestHandler>

3、在conf下面复制managed-schema文件,并重命名为"schema.xml"。修改如下内容:

<field name="id" type="long" indexed="true" stored="true" required="true"/>
<field name="informer_id" type="long" indexed="true" stored="false"/>
<field name="phone_number" type="string" indexed="true" stored="false"/> <field name="title" type="string" indexed="true" stored="true" />
<field name="content" type="string" indexed="true" stored="true" />
<field name="latitude" type="string" indexed="true" stored="true" />
<field name="longitude" type="string" indexed="true" stored="true" />
<field name="attachment" type="string" indexed="true" stored="true" /> <field name="clue_status" type="int" indexed="true" stored="true" />
<field name="del_flag" type="int" indexed="true" stored="true" />
<field name="gmt_create" type="date" indexed="true" stored="true" />
<field name="create_uid" type="long" indexed="true" stored="true" />
<field name="gmt_modified" type="date" indexed="true" stored="true" />
<field name="modified_uid" type="long" indexed="true" stored="true" /> <!--<field name="id" type="string" indexed="true" stored="true" multiValued="false" />-->
<field name="_version_" type="long" indexed="true" stored="false"/><!--已存在-->
<field name="_root_" type="string" indexed="true" stored="false" docValues="false" /><!--已存在-->
<field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/><!--已存在-->

PS:managed-schema是schema.xml文件的一个管理文件,schema.xml文件中的数据会被写入到managed-schema中去,如果出现运行异常的话(从日志中查看),可以检查该文件。

步骤5:

启动tomcat,并在URL中输入http://127.0.0.1:8080/solr/index.html路径。选择Core admin 输入如下设置:

将managed-schema改成schema.xml(应该是要改的)

设置好之后,点击Add Core按钮,进行设置,设置成功后,再core Selector选择刚刚添加的mynode。

选择刚刚添加的goods实体进行索引操作:我们这儿可以选择full-import或者delta-import(增量索引),选择增量索引需要把clean的勾给去掉,不然会清除之前的,增量的索引的初衷是对新增或者修改的记录重新索引,会追加到原有的索引文件当中。当我们选择full-import的时候,最好就是把原有的索引文件给清空重新索引。

索引成功如下如所示:

配置过程中出现的问题

1、找不到mysql驱动。解决方式:步骤2中加入mysql驱动包。

2、miss unqiue id 以及miss clue_id... 将data_config.xml里面的字段name与schema.xml里面字段对应,然后检查managed-schema里面的字段是否包含schema.xml中字段,是否存在重复。

3、数据导入进去却查询不出来,多重启几次服务器。

下一篇介绍查询与字段配置的东东。。科科。

我与solr(二)--导入mysql数据库的更多相关文章

  1. 使用solr批量导入mysql数据库,以及Unable to read: dataimport.properties等坑

    折腾了一下午终于成功了!先放一张成功图: 成功把mysql的数据添加进去了,我这里是整合了tomcat9,整合步骤挺麻烦的,百度一大堆! 这里主要介绍批量导入数据,这里有些坑,所以记录一下: 步骤: ...

  2. 在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引

    什么是solr solr是基于Lucene的全文搜索服务器,对Lucene进行了扩展优化. 准备工作 首先,去下载以下软件包: JDK8:jdk-8u60-linux-x64.tar.gz TOMCA ...

  3. 将Excel数据导入mysql数据库的几种方法

    将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...

  4. SpringMVC文件上传 Excle文件 Poi解析 验证 去重 并批量导入 MYSQL数据库

    SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库  /** * 业务需求说明: * 1 批量导入成员 并且 自主创建账号 * 2 校验数据格式 且 重复导入提示 已被 ...

  5. xlrd(excel导入mysql数据库)

    一.xlrd模块: python 对 excel 文件进行读操作 1.下载xlrd 并安装 http://pypi.python.org/pypi/xlrd wget https://pypi.pyt ...

  6. (转) PowerDesigner逆向工程导入MYSQL数据库总结

    PowerDesigner逆向工程导入MySQL数据库总结 由于日常数据建模经常使用PowerDesigner,使用逆向工程能更加快速的生成模型提高效率,所以总结使用如下: 1.      安装MYS ...

  7. 用命令行导出和导入MySQL数据库

    php 用命令行导出和导入MySQL数据库   命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program Files ...

  8. 解决导入MySQL数据库提示"Unknown character set: 'utf8mb4'"错误

    今天老左在准备迁移公司一个客户的网站到另外一台服务器中,根据正常的操作备份最新的网页文件和导出数据库,然后在新服务器中创建站点和数据库wget迁移进去解压.因为数据库比较小,所以直接用PHPMyAdm ...

  9. 导入MySQL数据库提示"Unknown character set: 'utf8mb4'"错误

      错误提示:导入MySQL数据库提示"Unknown character set: 'utf8mb4'"错误   分析: 看来是因为数据库版本的问题导致的,之前网站MYSQL5. ...

随机推荐

  1. cenos 7常用操作

    centos 虚拟机 <一>设置ip <1>虚拟机配置ip 虚拟机->设置->网络适配器->设置NAT模式 <2>编辑->虚拟网络编辑器,对 ...

  2. 循序渐进Python3(十二) --2--  web框架之django简单实现oracle数据库操作

    在 Django 中构建 Oracle 数据库支持的 Web 应用程序 了解如何配置 Django 以便与 Oracle 数据库交互,并使用 ORM 进行数据库连接.             产能在软 ...

  3. CU上看到的一个简单的算法帖子

    今天也是明白了,编程与数学的关系.例子很简单,不过能说明问题. 如果我们优化算法只从计算机特性来考虑,那么我们的人脑也成了计算机.不要忘记数学对于算法的重要影响. 题目: 返回小于数字 N 的所有 3 ...

  4. tesseract-ocr

    tesseract-ocr 第一课 前言 据网上介绍tesseract-ocr性能不错,并且可以支持识别中文了.于是尝试一下.   安装 1.下载地址: https://code.google.com ...

  5. SQL Cumulative Sum累积求和

    期望结果:  ID  VAL  CumSum  1  10  10  2  20  30  3  30  60 方法一: 使用分析函数 select id,val,sum(val) over ( or ...

  6. 通过XmlHttpRequest实现带进度条异步下载文件

    本博文源自技术群的讨论,因为网上找不到实现这样效果的的代码,而我说没问题,可以实现,因此有人质疑我是否能做到,呵呵,现将我实现代码贴出如下,希望有兴趣的同学可以继续完善: 本代码仅做技术展现,请勿探讨 ...

  7. 在oracle里写各种语句得心应手,但是在mybatis.xml文件里呢?

    这个问题我让我搞了大半天,实在气人,话不多说,直接上代码 <select id="*" resultMap="Blog" parameterType=&q ...

  8. 学习 OPenGL

    今天在网上看到一篇硕士论文<基于OpenGL三维虚拟场景建模技术研究_王志杰>,学习到OpenGL可以进行三维重建,决定从现在开始学习OpenGL,特开此贴.

  9. Fedora 21 64位系统安装WPS教程

    WPS的Linux版本的出现简直是Linux党的福音,Ubuntu上的WPS安装非常简单,但是在Fedora上却有点小麻烦.主要是库的依赖问题.下面记录一下Fedora 21的64位版安装WPS的完整 ...

  10. Android开发学习---android下的数据持久化,保存数据到rom文件,android_data目录下文件访问的权限控制

    一.需求 做一个类似QQ登录似的app,将数据写到ROM文件里,并对数据进行回显. 二.截图 登录界面: 文件浏览器,查看文件的保存路径:/data/data/com.amos.datasave/fi ...