官网下载solr并解压
进入到solr-7.7.2\server\solr。拷贝solr-7.7.2\server\solr\configsets的sample_techproducts_configs目录到solr-7.7.2\server\solr,重命名core1
进入到core1\conf,创建data-config.xml,数据库要添加isdelete字段作为删除标志。
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1/library_basic_v010?serverTimezone=UTC&tinyInt1isBit=false&autoReconnect=true&characterEncoding=utf8&characterSetResults=utf8"
user="root"
password="admin"/>
<document>
<entity name="core1" pk="con_id" dataSource="source" transformer="HTMLStripTransformer"
query=" SELECT con_id,con_name,image FROM con_vod "
deltaQuery="select con_id from con_vod where update_time >
UNIX_TIMESTAMP('${dataimporter.last_index_time}')"
deletedPkQuery="select con_id from con_vod where isdelete=1"
deltaImportQuery="select * from con_vod where con_id = '${dih.delta.con_id}'"
>
<field column="con_id" name="id"/> <!--column表列,name表列别名-->
<field column="con_name" name="con_name"/>
<field column="image" name="image" />
</entity>
</document>
</dataConfig>
修改core1\conf目录下的managed-schema,在里面添加
<!--name对应表列,不是表列别名,string要小写,大写报错-->
<field name="con_id" type="string" indexed="true" stored="true" multiValued="false" />
<field name="con_name" type="string" indexed="true" stored="true"/>
<field name="image" type="string" indexed="true" stored="true"/>
在core1\conf目录下创建dataimport.properties
#################################################
# #
# dataimport scheduler properties #
# #
#################################################
# tosync or not to sync
# 1- active; anything else - inactive
# 这里的配置不用修改
syncEnabled=1
# which cores to schedule
# ina multi-core environment you can decide which cores you want syncronized
# leave empty or comment it out if using single-core deployment
# 修改成你所使用的core,我这里是我自定义的core1
syncCores=core1
# solr server name or IP address
# [defaults to localhost if empty]
这个一般都是localhost不会变
server=localhost
# solr server port
# [defaults to 80 if empty]
# 安装solr的tomcat端口,如果你使用的是默认的端口,就不用改了,否则改成自己的端口就好了
port=8080
# application name/context
# [defaults to current ServletContextListener's context (app) name]
# 这里默认不改
webapp=solr
# URL params [mandatory]
# remainder of URL
# 这里改成下面的形式,solr同步数据时请求的链接
params=/dataimport?command=delta-import&clean=false&commit=true
# schedule interval
# number of minutes between two runs
# [defaults to 30 if empty]
#这里是设置定时任务的,单位是分钟,也就是多长时间你检测一次数据同步,根据项目需求修改
# 开始测试的时候为了方便看到效果,时间可以设置短一点
interval=1
# 重做索引的时间间隔,单位分钟,默认7200,即5天;
# 为空,为0,或者注释掉:表示永不重做索引
reBuildIndexInterval=7200
# 重做索引的参数
reBuildIndexParams=/select?qt=/dataimport&command=full-import&clean=true&commit=true
# 重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;
# 两种格式:2012-04-11 03:10:00 或者 03:10:00,后一种会自动补全日期部分为服务启动时的日期
reBuildIndexBeginTime=03:10:00
上边配置完之后,需要引入几个jar包,数据库驱动包,以及solr的数据导入包,数据库驱动包,要根据你自己是oracle
或者mysql
等引入。至于solr的数据导入包,可以找到solr-7.7.2\dist
文件夹,里边有如下包:
将以上包和solr-dataimport-scheduler.jar、数据库连接jar拷贝到solr-7.7.2\server\solr-webapp\webapp\WEB-INF\lib
中.
部署到tomcat
1.下载tomcat8.5将solr-7.7.2\server\solr-webapp\webapp复制到tomcat8.5/webapps目录下,并将webapp改名solr
2.在/usr/local/目录下新建文件夹solrHome/core1,将solr-7.7.2\server\solr目录下内容全部复制到/usr/local/solrHome/core1目录下.
3.将solr-7.7.2\contrib和dist目录复制到/usr/local/solrHome/core1目录下
4.将/usr/local/solrHome/core1/core1目录下的内容全部复制到/usr/local/solrHome/core1,把/usr/local/solrHome/core1/core1目录删除
修改tomcat8\webapps\solr\WEB-INF目录下的web.xml,并配置监听,添加如下
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solrHome/core1</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
<listener-class>
org.apache.solr.handler.dataimport.scheduler.ApplicationListener
</listener-class>
</listener>
然后在web.xml最底下将以下代码注释掉,如果不注释掉会有权限问题,访问solr主页会显示403错误。
修改solrHome\core1\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>
<lib dir="${solr.install.dir:/usr/local/solrHome/core1}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:/usr/local/solrHome/core1}/dist/" regex="solr-cell-\d.*\.jar" />
<lib dir="${solr.install.dir:/usr/local/solrHome/core1}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:/usr/local/solrHome/core1}/dist/" regex="solr-clustering-\d.*\.jar" />
<lib dir="${solr.install.dir:/usr/local/solrHome/core1}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:/usr/local/solrHome/core1}/dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="${solr.install.dir:/usr/local/solrHome/core1}/dist/" regex="solr-ltr-\d.*\.jar" />
<lib dir="${solr.install.dir:/usr/local/solrHome/core1}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:/usr/local/solrHome/core1}/dist/" regex="solr-velocity-\d.*\.jar" />
修改tomcat server.xml,protocol要修改不然会报org.apache.coyote.http11.AbstractHttp11Processor.process 错误
protocol="org.apache.coyote.http11.Http11NioProtocol"
executor="tomcatThreadPool"
maxThreads="512"
minSpareThreads="16"
maxSpareThreads="32"
enableLookups="false"
redirectPort="8443"
acceptCount="512"
debug="0"
connectionTimeout="60000"
disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true"
启动tomcat,访问http://ip:端口/solr/index.html
查看日志,每分钟自动同步更新,说明搭建成功。
solr数据同步配置较多,为了方便大家学习参考,我把已经配置好的供大家下载。