使用tomcat-8.5.37 jdk1.8.0_131 mysql8.0.13以及solr-7.1.0搭建solr平台

最近公司的项目想要加上全文检索,为了实现该功能,特意学习了一下solr,把搭建步骤及遇到的坑记录一下

1 、安装mysql

        mysql的安装选用的是最新的版本,下载解压,配置path路径,然后在解压的跟目录下,创建my.ini,内容如下

   

        [mysqld]
        # 设置3306端口
        port=3306
        # 设置mysql的安装目录
        basedir = C:\develop\mysql-8.0.13-winx64 
        # 设置mysql数据库的数据的存放目录
        datadir = C:\develop\mysql-8.0.13-winx64\data 
        # 允许最大连接数
        max_connections=200
        # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
        max_connect_errors=10
        # 服务端使用的字符集默认为UTF8
        character-set-server=utf8
        # 创建新表时将使用的默认存储引擎
        default-storage-engine=INNODB
        # 默认使用“mysql_native_password”插件认证
        default_authentication_plugin=mysql_native_password
        [mysql]
        # 设置mysql客户端默认字符集
        default-character-set=utf8
        [client]
        # 设置mysql客户端连接服务端时默认使用的端口
        port=3306

2、配置文件

一 、注意,做完上面的步骤,一定先要对数据库进行初始化,不然创建服务将无法启动,在数据库安装目录的bin文件夹下打开控制台,然后执行

mysqld --initialize --console

执行完将会在data文件夹下生产一大堆初始文件

二 、然后执行下面语句,将服务挂在起来,

mysqld install MySQL --defaults-file="C:\develop\mysql-8.0.13-winx64\my.ini"

接着就可以 net start mysql,启动mysql服务,当mysql服务启动之后

三 、mysql -uroot -p 默认第一次使用的密码mysql安装目录data文件夹下  计算机名.err文件中 例如

root@localhost: aX:Mh!GnH6Y<

使用上面的密码进入数据库然后进行更改密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';  

四、假如使用sqlyou因为mysql8.0加密方式变了,需要先使用控制台进入mysql然后执行

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';


 

3 安装solr将其集成到tomcat上,并导入数据

1 、复制项目

       解压tomcat跟solr7.1.0

       然后将solr-7.1.0\server\solr-webapp\webapp,里面的所有文件复制到tomcat  webapp下面的solr文件夹下

2、复制jar包

        solr-7.1.0\server\lib\ext目录下的所有jar包

        solr-7.1.0\dist下的 solr-dataimporthandler-7.1.0.jar

                  solr- dataimporthandler-extras-7.1.0.jar

        \solr-7.1.0\server\lib下metrics开头的5个jar

        粘贴复制到tomcat下的solr项目的WEB-INF/lib目录下;

3、复制solr-home

        新建solrhome文件夹,这个文件夹可以放在C盘或者D盘等根目录

        把solr-7.1.0\server\solr里面的内容复制到新建的文件夹下面

4 、复制实例

       在上面新建的solrhome文件夹下面新建实例文件夹,一般为collection

      然后复制 solr-7.1.0\example\example-DIH\solr\solr 里面的内容到 collection下

      打开里面的文件core.properties 假如name=collection

5 、更改web.xml

       打开tomcat下面的solr项目的web.xml

       打开<env-entry>的注释,并把<env-entry-value>的值改成solr-home都得位置

        <env-entry>
             <env-entry-name>solr/home</env-entry-name>
             <env-entry-value>/put/your/solr/home/here</env-entry-value>
             <env-entry-type>java.lang.String</env-entry-type>
        </env-entry>

        将web.xml最下面的  <security-constraint>给注释了,即是下面的内容

   

       <security-constraint>
              <web-resource-collection>
                    <web-resource-name>Disable TRACE</web-resource-name>
                    <url-pattern>/</url-pattern>
                    <http-method>TRACE</http-method>
              </web-resource-collection>
              <auth-constraint/>
        </security-constraint>
        <security-constraint>
              <web-resource-collection>
                    <web-resource-name>Enable everything but TRACE</web-resource-name>
                    <url-pattern>/</url-pattern>
                    <http-method-omission>TRACE</http-method-omission>
              < /web-resource-collection>
        </security-constraint>

       然后即可启动tomcat,启动成功后可以在浏览器上输入

       localhost:8080/solr/index.html,查看是否配置成功


4、引入中文分词器   

     搭建成功之后,如果中文分词器版本过低,将会使solr启动不起来,因此选用的是ik-analyzer-solr7-7.x.jar

     1 、将ik-analyzer-solr7-7.x.jar放入solr项目lib文件夹下

     2 、打开solrhome实例里面的conf文件夹下面的managed-schema.xml,然后将中文分词器给定义了,并定义几个域,

           接着就可以在solr的网页上查看配置结果

   <fieldType name="text_ik" class="solr.TextField">  
	  <analyzer type="index">  
		  <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>  
		  <filter class="solr.LowerCaseFilterFactory"/>  
	  </analyzer>  
	  <analyzer type="query">  
		  <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>  
		  <filter class="solr.LowerCaseFilterFactory"/>  
	  </analyzer>  
   </fieldType> 

   <field name="product_name" type="text_ik" indexed="true" stored="true"/>
   <field name="product_price"  type="pfloat" indexed="true" stored="true"/>
   <field name="product_description" type="text_ik" indexed="true" stored="false" />
   <field name="product_picture" type="string" indexed="false" stored="true" />
   <field name="product_catalog_name" type="string" indexed="true" stored="true" />
   <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
   <copyField source="product_name" dest="product_keywords"/>
   <copyField source="product_description" dest="product_keywords"/>

5 、导入mysql数据

1、在solrhome实例里面与data文件夹同级建立lib文件夹,然后将mysql的驱动包放进去,因为mysql我们使用8以上版本,需要注意的是mysql驱动包的版本mysql-connector-java-8.0.12.jar

2 、因为实例里面的solrconfig.xml中有如下配置

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

因此在conf文件夹下olr-data-config.xml,进行重新编写,内容如下

<?xml version="1.0" encoding="UTF-8" ?>  
<dataConfig>   
	<dataSource type="JdbcDataSource"   
			  driver="com.mysql.cj.jdbc.Driver"   
			  url="jdbc:mysql://localhost:3306/solr?serverTimezone=UTC&amp;useSSL=false"   
			  user="root"   
			  password="kfhs2012"/>   
	<document>   
		<entity name="product" query="SELECT pid,name,catalog_name,price,description,picture FROM products ">
			 <field column="pid" name="id"/> 
			 <field column="name" name="product_name"/> 
			 <field column="catalog_name" name="product_catalog_name"/> 
			 <field column="price" name="product_price"/> 
			 <field column="description" name="product_description"/> 
			 <field column="picture" name="product_picture"/> 
		</entity>   
	</document>   
</dataConfig>

其中里面的驱动必须写新版驱动,而url,?后面的参数必选带上,否则导入数据不成功,将以上配置完成就可以去solr网页上将数据库里面的数据进行导入

 

         

   

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值