我们在solr已安装有的前提下配置一个新的solr项目。
- 假设solr解压时的目录为SOLR_SET目录;
- 假设solr存放数据的位置是SOLR_HOME目录;
- 假设tomcat目录是TOMCAT_HOME目录。
- 首先将SOLR_SET/example/ 下的整个 solr 文件夹拷贝到 SOLR_HOME 目录下,并更名为你项目需要的名字,比如我的叫 gene。
- 修改 SOLR_HOME/conf/solrconfig.xml 文件
需要更改的地方如下:
<dataDir>${solr.data.dir:SOLR_HOME/gene/data}</dataDir>
这主要指明该项目索引数据放的位置
需要添加的内容如下:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
这是加入导入数据的功能,并且指明数据源配置文件的位置,这里是当前目录下的data-config.xml文件
3. 配置数据源配置文件SOLR_HOME/conf/data-config.xml
需要有以下内容:
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/gene" user="root" password=""/> <document name="content"> <entity name="pmc" query="select PMCID,TITLE,ABS,VENUE from pmc" deltaImportQuery="select PMCID,TITLE,ABS,VENUE from pmc where LAST_MODIFIED > '${dataimporter.last_index_time}'" deltaQuery="select PMCID from pmc where LAST_MODIFIED > '${dataimporter.last_index_time}'"> <field column="PMCID" name="id" /> <field column="TITLE" name="pmctitle" /> <field column="ABS" name="pmcabs" /> <field column="VENUE" name="pmcvenue" /> <entity name="author" query="select NAME from author where PMCID='${pmc.PMCID}'"> <field column="NAME" name="authorname" /> </entity> </entity> </document> </dataConfig>
其中<dataSource>标签用来配置数据源信息。<entity>标签用来配置实体,属性query是从数据库中导入哪些字段的sql语句,deltaImportQuery 和 deltaQuery 是用来配置增量导入时使用的sql语句,${dataimporter.last_index_time} 是solr保存的上次索引建立的时间,增量导入的原理就是比较最近一次索引的时间和数据库中某记录最后更新的时间,所以数据库中应该有一个记录更新时间的字段LAST_MODIFIED 类型是timestamp 。<entity>标签中还可以嵌套<entity>来表现一对多关系。
4. 配置SOLR_HOME/conf/schema.xml 文件
内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <schema name="example" version="1.4"> <types> <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/> <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> <fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0"/> </types> <fields> <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="pmctitle" type="string" indexed="true" stored="true" /> <field name="pmcabs" type="string" indexed="true" stored="true" /> <field name="pmcvenue" type="string" indexed="true" stored="true" /> <field name="authorname" type="string" indexed="true" stored="true" multiValued="true"/> <fields> <uniqueKey>id</uniqueKey> <defaultSearchField>contents</defaultSearchField> <copyField source="id" dest="contents"/> <copyField source="pmctitle" dest="contents"/> <copyField source="pmcabs" dest="contents"/> <copyField source="pmcvenue" dest="contents"/> <copyField source="authorname" dest="contents"/> <solrQueryParser defaultOperator="AND"/> </schema>
5. 在TOMCAT_HOME/conf/Cataline/localhost 下建立gene.xml文件(注意这里的xml文件名一定要与你的solr名字相同,我这里叫gene)
内容如下:
<?xml version="1.0" encoding="utf-8"?> <Context docBase="SOLR_SET/dist/apache-solr-3.3.0.war" debug="0" crossContext="true"> <Environment name="solr/home" type="java.lang.String" value="SOLR_HOME/gene" override="true"/> </Context>
6. 因为这里使用了从数据库导入数据的方式,所以需要将数据库的驱动jar包,我这里是mysql-connector-java-5.1.13.jar 以及前面配置的DataImportHandler类的jar文件,我这里是apache-solr-dataimporthandler-3.3.0.jar 放到新生成的solr项目gene 的TOMCAT_HOME/webapps/gene/WEB-INF/lib 目录下(否则会出现Error loading class 的错误),启动Tomcat,打开浏览器输入http://localhost:8080/gene/admin/index.jsp 出现如下,说明配置成功。
7. 数据导入,该部分查看solr使用手册等资料(略)