首页 > 其他 > 详细

Solr初步配置

时间:2015-12-30 23:59:57      阅读:521      评论:0      收藏:0      [点我收藏+]

引用知乎上的一段话:

Lucene更像是一个SDK。 有完整的API族以及对应的实现。你可以利用这些在自己的应用里实现高级查询(基于倒排索引技术的),Lucene对单机或者桌面应用很实用很方便。
但是Lucene,需要开发者自己维护索引文件,在多机环境中备份同步索引文件很是麻烦。于是,就有了Solr。

而Solr是一个有HTTP接口的基于Lucene的查询服务器,封装了很多Lucene细节,自己的应用可以直接利用诸如 .../solr?q=abc 这样的HTTP GET/POST请求去查询,维护修改索引。

给个比方就是,Lucene是给你一堆包,让你自己从底层构建一个数据库。而Solr是一个实现好的数据库程序,安装后就可以直接用了。
 
Tomcat 下配置solr
在webapp下放入war包解压后的solr文件夹,还需要一个solr_home文件夹,这个文件夹下放core或者叫collection。在solr文件夹下有一个web.xml,配置一个solr_home的绝对路径。
<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了。
技术分享

Solr初步配置

原文:http://www.cnblogs.com/chaoslane/p/5090281.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!