Linux下Solr相关配置

1、访问http://localhost:8983

点击菜单Core Admin->Add Core,会出现以下页面


我们需要手动创建Core目录,该目录下要包含conf/solrconfig.xml、conf/schema.xml这连个基本文件

2、配置solrconfig.xml

因为我的项目需要加速数据库中数据的访问速度,因此需要加入结构化数据的数据导入句柄

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />  //我们需要引入在solr安装目录中的dist目录下相关jar包
<lib dir="${solr.install.dir:../../../..}/lib/" regex="mysql-connector-java-.*\.jar" />  //引入数据库的驱动jar包
<requestHandler name="/dataimport" class="solr.DataImportHandler">
    <lst name="defaults">
      <str name="config">db-data-config.xml</str>//这是关于数据库的配置
    </lst>
</requestHandler>

3、 配置schema.xml

<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="taskUUID" type="string" indexed="true" stored="true" required="true" />
<field name="taskLogo" type="string" indexed="true" stored="true" required="true" />
<field name="taskName" type="string" indexed="true" stored="true" required="true" />
<field name="taskType" type="int" indexed="true" stored="true" required="true" />
<field name="taskLang" type="int" indexed="true" stored="true" required="true" />
<field name="taskDesc" type="text_general" indexed="true" stored="true" required="true"/>
<field name="status" type="int" indexed="false" stored="true" required="true" />
<field name="createByName" type="string" indexed="true" stored="true" required="true" />
<field name="createTime" type="<span style="color:#ff0000;">string</span>" indexed="true" stored="true" required="true" />
<field name="updateByName" type="string" indexed="true" stored="true" required="true" />
<field name="updateTime" type="<span style="color:#ff0000;">string</span>" indexed="true" stored="true" required="true" />

<span style="font-family: Arial, Helvetica, sans-serif;"><field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/> //这个必须要配置,如果已经存在的话就不需要了</span>

</pre></p><p><pre name="code" class="html"><copyField source="taskUUID" dest="text"/>
<copyField source="taskName" dest="text"/>
<copyField source="taskDesc" dest="text"/>

上面这三行配置的用于组合查询的字段,意思是把这三个字段拼接到text这个字段上,相当于mysql中的concat,同样由于多字段的模糊查询。

4、配置db-data-config.xml

以下代码需要注意几个地方:

UNIX_TIMESTAMP:这个返回的数据以秒为单位,而我的数据库中是毫秒级别的,因此需要乘以1000

row:这个自定义 函数中的row代表的是数据库的一条记录,因此取出的字段也是数据库中的字段

GMT+8:这个是指定时区,要不然算出的值不是咱们的北京时间,并且修改solr安装目录bin下的solr.in.sh中的SOLR_TIMEZONE="UTC,修改成#SOLR_TIMEZONE="UTC+8",重启Solr服务器即可

<dataConfig>
	<script>
		<![CDATA[
                function dataFormat(row)        {
                    var createtime = row.get('<span style="color:#ff0000;">create_time</span>');
	<span style="white-space:pre">	</span>    var updatetime = row.get('<span style="color:#ff0000;">update_time</span>');
		    var createtimets;
		    var updatetimets;
		    var sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		    <span style="color:#ff0000;">sdf.setTimeZone(java.util.TimeZone.getTimeZone("GMT+8"));</span>
		    if(createtime != null) {
			createtimets = new java.util.Date(new java.lang.Long(createtime));
			row.put('create_time', sdf.format(createtimets));
		    }
		    if(updatetime != null) {
		<span style="white-space:pre">	</span>updatetimets = new java.util.Date(new java.lang.Long(updatetime));
			row.put('update_time', sdf.format(updatetimets));	
		    }
                    return row;
                }
        ]]>
	</script>
    <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/db_cda" user="root"  password="123" convertType="true"/>
    <document>
        <entity name="task" query="select * from think_task" <span style="color:#ff0000;">transformer="script:dataFormat"</span>
			deltaQuery="select id from think_task where update_time > <span style="color:#ff0000;">UNIX_TIMESTAMP</span>('${dataimporter.last_index_time}') * 1000"
			deltaImportQuery="select * from think_task where id = '${dataimporter.delta.id}'">
            <field column="id" name="id" />
			<field column="task_uuid" name="taskUUID" />
            <field column="task_logo" name="taskLogo" />
			<field column="task_name" name="taskName" />
            <field column="task_type" name="taskType" />
            <field column="task_lang" name="taskLang" />
            <field column="task_desc" name="taskDesc" clob="true"/>
            <field column="status" name="status" />
            <field column="create_by_name" name="createByName" />
            <field column="create_time" name="createTime"/>
            <field column="update_by_name" name="updateByName" />
            <field column="update_time" name="updateTime"/>
        </entity>
    </document>
</dataConfig>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值