您的位置:首页 > 运维架构 > Linux

Linux下Solr相关配置

2016-01-21 16:10 483 查看

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: