引用知乎上的一段话:
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>C:\java\Tomcat\apache-tomcat-8.0.24 solr\solr_home</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
在solrconfig.xml中配置 data-config 相对路径
<requestHandler name="/dataimport" class="solr.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
接下来配置data-config.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?><dataConfig> <!--dih导入附件内容进行索引--> <dataSource name="urlDataSource" type="BinURLDataSource"/> <!--数据库配置--> <dataSource autoCommit="true" driver="oracle.jdbc.driver.OracleDriver" fetchSize="-1" name="db" password="ams2000" type="JdbcDataSource" url="jdbc:oracle:thin:@localhost:1521:orcl" user="tests"/> <document> <!--query 用于初次导入到索引的sql语句。 deltaQuery 用于增量索引的sql语句,用于取得需要增量索引的ID。 deltaImportQuery 根据ID取得需要进入的索引的单条数据。 deletedPkQuery 用于取出需要从索引中删除文档的的ID。--> <entity dataSource="db" deletedPkQuery="select syscode,psyscode,libcode,unitsys from efileview_delta where status=1" deltaImportQuery="select storePath,syscode,psyscode,filename,libcode,filepath,unitsys,createtime,filetype from efileview_delta where syscode=‘${dataimporter.delta.SYSCODE}‘" deltaQuery="select syscode,psyscode,libcode,unitsys from efileview_delta where status=0" name="efile" pk="SYSCODE" query="select storePath,syscode,psyscode,unitsys,libcode,filename,filepath,createtime,filetype from efileview"> <field column="syscode" name="syscode"/> <field column="psyscode" name="psyscode"/> <field column="unitsys" name="unitsys"/> <field column="createtime" name="createtime"/> <field column="filename" name="filename"/> <field column="libcode" name="libcode"/> <field column="filepath" name="filepath"/> <field column="filetype" name="filetype"/> <!--Tika解析富文件 嵌套的entity 每索引一个条目就索引一个电子文件 url取文件的绝对路径和文件名--> <entity format="text" name="files" processor="MyTikaEntityProcessor" url="${efile.STOREPATH}${efile.FILEPATH}"> <field column="text" name="text"/> <field column="Author" meta="true" name="author"/> <field column="title" meta="true" name="title"/> <field column="width" meta="true" name="width"/> <field column="height" meta="true" name="height"/> <field column="fileAbsolutePath" name="filePath"/> </entity> <entity dataSource="db" name="file" onError="skip" pk="SYSCODE" query="select syscode,psyscode,title,jgdm,mj,bgqx,flmc,prjcode from d_file${efile.LIBCODE}_${efile.UNITSYS} where syscode=‘${efile.PSYSCODE}‘"> <field column="syscode" name="filesyscode"/> <field column="psyscode" name="volsyscode"/> <field column="title" name="ftitle"/> <field column="jgdm" name="jgdm"/> <field column="mj" name="mj"/> <field column="bgqx" name="bgqx"/> <field column="flmc" name="flmc"/> <field column="prjcode" name="prjcode"/> </entity> </entity> </document> </dataConfig>
注意:配置schema.xml 时 只要dataconfig中entity有的field 就要在schema中配置对应的 ,之后就是在schema中配置mmseg4J分词器。
<field name="text" type="mmseg" indexed="true" stored="true" multiValued="false" required="false"/> <fieldType name="mmseg" class="solr.TextField" > <analyzer type="index"> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="dic"/> </analyzer> <analyzer type="query"> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="dic" /> </analyzer> </fieldType>
dicPath="dic"就是分词字典的位置 MMSeg4J对于字典dic文件的命名有要求,只有以words开头 以.dic结尾的文件才会被加载。
现在基本就配置完成 可以进入solr后台,dataimport之后再query了。
原文:http://www.cnblogs.com/chaoslane/p/5090281.html