Solr部署,连接mysql,实现模糊查询功能,以及按照距离排序功能

本文详细介绍了如何在Solr4.10.0中部署基础功能,连接MySQL数据库,实现全局模糊查询和按经纬度距离排序。涉及版本选择、配置修改、数据源设置、分词器应用以及SpringBoot系统集成。
摘要由CSDN通过智能技术生成

先来谈谈本人奋战3天趟过的坑

  • 版本选择问题:
    第一次入坑,选择的是JDK1.8+tomcat8.5+solr6.6,网上搜索各种教程,最后给我来了个JDK版本不匹配。这不是逗我呢!
    第二次入坑,果断降低solr的版本,选择的是,JDK1.8+tomcat8.5+solr4.10.0,最终又是以失败告终,具体原因没搞明白!
    第三次尝试,按照网上的说法,抛弃tomcat,最终选择的是JDK1.8+solr4.10.0,完美运行。(感谢以下网址提供的帮助http://www.cnblogs.com/luxiaoxun/p/4442770.html
  • 资源下载问题:集成过程中,到处寻找资源,浪费了很多时间,因此楼主汇总了下本次集成所需要的所有资源。点我下载所有资源

目录

  • 基础solr功能部署
  • solr与mysql数据库集成
  • 全局搜索,模糊查询(实现类似淘宝的搜索框)
  • 按照距离(经纬度)远近排序功能的实现
  • solr与java的集成,springboot系统查询solr数据

基础solr功能部署

  1. 在网上下载solr4.10.0版本
  2. 解压至本地文件夹(楼主的位置是C:\D\solr)
    这里写图片描述
  3. cmd进入 C:\D\solr\solr-4.10.0\example,执行java -jar start.jar
    这里写图片描述
  4. 访问http://localhost:8983/solr (到此完美部署成功)
    这里写图片描述

连接mysql数据库

1.修改C:\D\solr\solr-4.10.0\example\solr\collection1\conf\solrconfig.xml
在《requestHandler name=”/select” class=”solr.SearchHandler”》前面上加上一个dataimport的处理的Handler

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

2 在同目录下添加data-config.xml

<?xml version="1.0" encoding="UTF-8" ?>  
<dataConfig>  
    <dataSource driver="com.mysql.jdbc.Driver"    
                url="jdbc:mysql://localhost:3306/chuangzzhl"     
                user="root"     
                password="123456"   
               batchSize="-1"/>
    <document>  
        <entity name="t_zzhl_wx_user_info" pk="wx_user_info_id"  
                query="select wx_user_info_id,country,city,province, gender,language,nick_name,user_no,BIRTH_YEAR from t_zzhl_wx_user_info"  
                deltaImportQuery="select  wx_user_info_id,country,city,province, gender,language,nick_name,user_no, BIRTH_YEAR from t_zzhl_wx_user_info where id='${dataimporter.delta.wxUserInfoId}'"  
                deltaQuery="select wx_user_info_id,country,city,province, gender,language,nick_name,user_no, BIRTH_YEAR from t_zzhl_wx_user_info where  to_char(update_time,'yyyy-mm-dd hh24:mi:ss')> '${dataimporter.last_index_time}'">  
            <field column="wx_user_info_id" name="wxUserInfoId"/>  
            <field column="country" name="country"/>  
            <field column="city" name="city"/>  
            <field column="province" name="province"/>  
            <field column="gender" name="gender"/>  
            <field column="language" name="language"/>  
            <field column="nick_name" name="nickName"/>  
            <field column="user_no" name="userNo"/>     
            <field column="BIRTH_YEAR" name="birthYear"/>
        </entity>
    </document>  
</dataConfig>  

说明:
dataSource是数据库数据源。
Entity就是一张表对应的实体,pk是主键,query是查询语句。
Field对应一个字段,column是数据库里的column名,后面的name属性对应着Solr的Filed的名字。

3修改同目录下的schema.xml,这是Solr对数据库里的数据进行索引的模式(添加索引字段:这里每个field的name要和data-config.xml里的entity的field的name一样,一一对应。)
备注:第一行的“id”是solr默认的主键字段,且类型是string类型,单和我的模型不一样咋办?楼主的id是“wxUserInfoId”,且是Long类型。
修改方法,注释掉默认的id,新增一行“wxUserInfoId”,修改uniqueKey标签的值为“wxUserInfoId”

    <uniqueKey>wxUserInfoId</uniqueKey>
    <!--
    <uniqueKey>id</uniqueKey>
    <field name="id" type="String" indexed="true" stored="true" required="true" multiValued="false" /> 
    --> 
     <field name="wxUserInfoId" type="tlong" indexed="true" stored="true" required="true" multiValued="false" /> 
     <field name="country"      type="string"    indexed="true"  stored="true" />  
     <field name="city"      type="string"    indexed="true"  stored="true" />  
     <field name="province"      type="string"    indexed="true"  stored="true" />  
     <field name="gender"      type="string"    indexed="true"  stored="true" />    
     <field name="language"      type="string"    indexed="true"  stored="true" />  
     <field name="nickName"      type="string"    indexed="true"  stored="true" />  
     <field name="userNo"      type="string"    indexed="true"  stored="true" /> 
     <field name="birthYear"      type="string"    indexed="true"  stored="true" /> 

4 修改同目录下的elevate.xml(备注:如果修改主键类型,才需要做这一步,否则可以跳过)
注释掉下面两行

<doc id="MA147LL/A" />
<doc id="IW-02" exclude="true" />

5 拷贝mysql-connector-java-5.1.22-bin.jar和solr-dataimporthandler-4.10.0.jar和solr-dataimporthandler-extras-4.10.0.jar到C:\D\solr\solr-4.10.3\example\solr-webapp\webapp\WEB-INF\lib。一个是mysql的java驱动,另两个在C:\D\solr\solr-4.10.0\dist目录里,是org.apache.solr.handler.dataimport.DataImportHandler所在的jar。

6 重启Solr。如果配置正确就可以启动成功。

全局搜索,模

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值