• 在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器


    最近在研究solr,这里只记录一下eclipse中构建solr项目,添加core,整合mysql,添加中文分词器的过程。

    版本信息:solr版本6.2.0+tomcat8+jdk1.8

    推荐阅读:solr中文官方文档

    参考:solr6.2从环境部署到与mysql整合到中文分词器到solrJ的使用

    在eclipse中构建solr项目:

    1.下载solr-6.2.0.zip,官网下载地址:http://lucene.apache.org/solr/downloads.html。

    2.在eclipse中创建web项目solr。

    3.将solr-6.2.0serversolr-webappwebapp下的内容复制到solr工程的webapp下。

    4.将solr-6.2.0serverlibext下的jar包,复制到solr工程的WEB-INF/lib中。

    5.将solr-6.2.0server esourceslog4j.properties文件复制到solr工程的source folder中。

    6.在solr工程的webapp文件夹下,新建文件夹solrhome,将solr-6.2.0serversolr下的文件夹以及文件copy到solrhome中。此时项目组成如下图:

    7.修改web.xml文件,修改env-entry-value的值为"../webapps/solr/solrhome"。(如果env-entry-type报错,把标签env-entry-type放到env-entry-value前面即可)

    8.启动tomcat,访问http://localhost:8080/solr/index.html,如下图说明构建成功。

     

    solr添加core:

    1.复制solr项目的solrhome/configsets/basic_configs文件夹到solrhome下,并改成任意名字(这里我的core名称是coretest)。

    2.在solr项目页面中添加core,下图中coretest对应上面创建的文件夹名称,dataDir指定记录core的数据信息的文件夹,config和schema是core的配置文件,在文件夹coretest/conf下面可以找到。

    创建完成后如图:

    整合mysql:

    1.找到tomcat目录下的webappssolrsolrhomecoretest文件夹,复制core.properties到solr项目的webapp/solrhome/coretest目录下。(core.properties保存的是上一步创建的core的配置信息,solr启动后会查找该文件,用来恢复core,可以忽略该步骤,但是当启动solr时需要重新添加core)

    2.创建一个mysql数据表,并添加一些基础数据,建表语句:

    DROP TABLE IF EXISTS `solrtest`;
    CREATE TABLE `solrtest` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
      `context` varchar(255) DEFAULT NULL COMMENT 'context',
      `updateTime` datetime DEFAULT NULL COMMENT 'updateTime',
      `sort` int(11) DEFAULT '1',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

    INSERT INTO `solrtest` VALUES ('1', 'qweqwe', '2017-02-04 09:21:56', '1');
    INSERT INTO `solrtest` VALUES ('2', '足球', '2017-02-04 11:55:02', '1');
    INSERT INTO `solrtest` VALUES ('3', '足球篮球', '2017-02-04 11:55:14', '1');
    INSERT INTO `solrtest` VALUES ('4', '足球篮球羽毛球', '2017-02-04 16:27:41', '1');

    3.修改coretest/conf文件夹下的solrconfig.xml文件,增加代码:

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

    4.在同级目录下创建solr-data-config.xml文件,并添加代码:

    <dataConfig>    
      <dataSource type="JdbcDataSource"   
        driver="com.mysql.jdbc.Driver"   
        url="jdbc:mysql://localhost:3306/solrtest"   
        user="root"   
        password="root"/>  
          
      <document name="solr_mysql_test">  
        <entity name="solrtest" pk="id" query="select * from solrtest" 
            deltaImportQuery="select * from solrTest where id = '${dih.delta.id}'"   
            deltaQuery="select id from solrTest where updateTime > '${dataimporter.last_index_time}'"/>                
          <field column="id" name="id"/>    
       <field column="context" name="context"/>    
          <field column="updateTime" name="updateTime"/>   
          <field column="sort" name="sort"/>           
      </document>  
    </dataConfig>

    5.在同级目录打开 managed-schema.xml ,在其中增加如下代码。(其中注释掉的name为id的field,是因为managed-schema.xml默认就有id字段,不注释会产生冲突。)

        <!-- <field name="id" type="string" required="true" indexed="true" stored="true" multiValued="false"/>  -->
        <field name="context" type="string" indexed="true" stored="true" multiValued="false"/>  
        <field name="updateTime" type="date" indexed="true" stored="true" multiValued="false"/>  
        <field name="sort" type="int" indexed="true" stored="true" multiValued="false"/> 

    6.将下载的solr-6.2.0/dist文件夹下的jar包复制到WEB-INF/lib下(主要是solr-dataimporthandler-6.2.0.jar和solr-dataimporthandler-extras-6.2.0.jar),将mysql的驱动jar包复制到WEB-INF/lib下。

    7.启动tomcat,登陆solr页面,导入数据:打开Dataimport页面,勾选Auto-Refresh Status然后Execute即可。

    完成后查询数据:

    添加中文分词器 :

    1.这里我使用的中文分词器是IKAnalyzer,首先需要到网上下载IKAnalyzer的jar包,我使用的jar包是ik-analyzer-solr5-5.x.jar。

    2.把ik-analyzer-solr5-5.x.jar 放到WEB-INFlib 中。

    3.在managed-schema.xml文件中添加分词器配置。(这里分词器名称是text_ik)

       <!-- IKAnalyzer中文分词器.如果版本与solr对应不上,会报抽象方法错误 -->  
    <fieldType name="text_ik" class="solr.TextField">  
        <!--索引时候的分词器-->  
        <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>  
        <!--查询时候的分词器-->  
        <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>  
    </fieldType>

    4.在managed-schema.xml文件中对某个field使用分词器text_ik:

    <field name="context" type="text_ik" indexed="true" stored="true" multiValued="false"/>

    完成后查询测试:

    其他:

      导入数据完成后,tomcat的webappssolrsolrhomecoretest文件夹下应该会多出文件夹data和配置文件core.properties,其中core.properties记录core的配置信息,solr启动后会查找该文件,用来恢复core,data文件夹记录core的数据信息,用来恢复core的数据,如果没有的话,需要重新import数据。

  • 相关阅读:
    J.U.C并发框架源码阅读(十五)CopyOnWriteArrayList
    J.U.C并发框架源码阅读(十四)ScheduledThreadPoolExecutor
    J.U.C并发框架源码阅读(十三)ThreadPoolExecutor
    Django基础之request对象
    Django基础之给视图加装饰器
    Django基础之初识视图
    Django基础之CBV和FBV
    Django基础之template
    Django基础之命名空间模式(include)
    Django基础之命名URL和URL反向解析
  • 原文地址:https://www.cnblogs.com/Jason-Xiang/p/6378138.html
Copyright © 2020-2023  润新知