0
点赞
收藏
分享

微信扫一扫

solr4.40导入mysql数据库数据建立索引


首先必须安装好Solr4.40和MySql数据库



Solr4.40安装到widows下请参考我的另一篇文章



1.打开solrHome下例如我本机上的E:\solrTest\solrHome\core0\conf\solrconfig.xml( 注意个人配置位置不一样,配置文件所在位置就不一样)



加入以下内容:

<requestHandler name="/dataimport" class = "org.apache.solr.handler.dataimport.DataImportHandler">
 
  
    <lst name="defaults"> 
 
  
 <str name="config">db-data-config.xml</str> 
 
  
</lst>   
 
  
   </requestHandler>



2然后再solrconfig.xml同个目录下创建db-data-config.xml文件



填入内容如下:



<dataConfig>  
 
  
<!--数据库配置信息-->
 
  
      <dataSource type="JdbcDataSource"   
 
  
                  driver="com.mysql.jdbc.Driver"  
 
  
                  url="jdbc:mysql://127.0.0.1:3306/test"   
 
  
                  user="root"   
 
  
                  password=""/>  
 
  
<!--查询语句并重命名-->
 
  
      <document>  
 
  
        <entity name="user"   
 
  
                query="select * from user">  
 
  
<field column="id" name="id"/>
 
  
<field column="name" name="name"/>   
 
  
<field column="age" name="age"/>   
 
  
        </entity>  
 
  
      </document>  
 
  
    </dataConfig>



注意:必须引入在solr\WEB-INF\lib下必然引入solr-dataimporthandler-4.4.0.jar包 ,此包存在于solr安装包下solr-4.4.0\dist目录下



安装Mysql数据库创建user表 这些我就不说了,你们应该都会,不会可以百度,还要记得引入 mysql-connector-java-5.1.18-bin.jar



3solrHome下面默认是没有引入分词器,要根据自己需求引入所需要分词器,并且我们要配置我们要查询的域



NGramTokenizer 分词器



,你们可以根据自己需求换成别的分词器



在配置文件schema.xml下的<types></types>之间加入以下内容:


<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
 
  
      <analyzer type="index">
 
  
<tokenizer class="solr.NGramTokenizerFactory" />
 
  
<filter class="solr.StopFilterFactory" ignoreCase="true"
 
  
words="stopwords.txt" enablePositionIncrements="true" />
 
  
<!-- in this example, we will only use synonyms at query time <filter 
 
  
class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" 
 
  
expand="false"/> -->
 
  
<filter class="solr.LowerCaseFilterFactory" />
 
  
</analyzer>
 
  
<analyzer type="query">
 
  
<tokenizer class="solr.NGramTokenizerFactory" />
 
  
<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>



还要在<fields></fields>下如下:(text对于上面text:会被分词器处理)


<fields>   
 
  
  <!-- general -->
 
  
  <field name="id"        type="long"   indexed="true"  stored="true"  multiValued="false" required="true"/>
 
  
  <field name="name"      type="
   text
   "   indexed="true"  stored="true"  multiValued="false" /> 
 
  
  <field name="age"       type="long"   indexed="true"  stored="true"  multiValued="false" /> 
 
  
  <field name="core0"     type="string"    indexed="true"  stored="true"  multiValued="false" />
 
  
  <field name="_version_" type="long"      indexed="true"  stored="true"/>
 
  
 </fields>

4在同目录下创建stopwords.txt和synonyms.txt,里面可以填入自己定义的停词和近义词



我的配置文件大概是这样




怕你们弄错了展示下schema.xml如下:



solr4.40导入mysql数据库数据建立索引_分词器


5启动tocmat运行,在浏览器输入:http://127.0.0.1:8080/solr


以下是点击查看:1数据库引入配置文件2查询情况3分词情况


solr4.40导入mysql数据库数据建立索引_分词器_02

solr4.40导入mysql数据库数据建立索引_solr_03

solr4.40导入mysql数据库数据建立索引_分词器_04


 


 

solr4.40导入mysql数据库数据建立索引_分词器_05

举报

相关推荐

0 条评论