您的位置:首页 > 数据库 > MySQL

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

2018-02-03 20:14 1136 查看

先来谈谈本人奋战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功能部署

在网上下载solr4.10.0版本

解压至本地文件夹(楼主的位置是C:\D\solr)



cmd进入 C:\D\solr\solr-4.10.0\example,执行java -jar start.jar



访问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"/>
4000

</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.模糊查询是利用分词器去做的

2下载分词器所需jar包(IKAnalyzer2012FF_u1.jar),将jar包放入C:\D\solr\solr-4.10.0\example\solr-webapp\webapp\WEB-INF\lib

3 修改C:\D\solr\solr-4.10.0\example\solr\collection1\conf\schema.xml文件

楼主这边选择gender和nickName这两个字段作为查询条件,这两个字段是在之前新加的。修改了type的值

searchKeywords是自己随意定义的一个名字,只要不和已经存在的字段重名就可以,用于后面模糊查询时的参数key

<!-- 修改 -->
<field name="gender"      type="text_ik"    indexed="true"  stored="true" />
<field name="nickName"      type="text_ik"    indexed="true"  stored="true" />

<!-- 新增 -->
<field name="searchKeywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="gender" dest="searchKeywords"/>
<copyField source="nickName" dest="searchKeywords"/>
<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 重启Solr。如果配置正确就可以启动成功。



按照距离排序功能的实现

1 既然用到距离,就需要涉及到经纬度相关信息,因此,现在数据库增加一个字段LAT_LON VARCHAR类型

2 修改C:\D\solr\solr-4.10.0\example\solr\collection1\conf\data-config.xml文件(按照红色框框标注的新增)



3 修改C:\D\solr\solr-4.10.0\example\solr\collection1\conf\schema.xml文件(新增字段latLon)

<!-- 新增字段 -->
<field name="latLon" type="location" indexed="true" stored="true"/>

<!-- 默认就已经存在,不需要新增 -->
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>


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

5 页面查询操作



6 java后台查询操作(参数)

//经纬度排序参数设置
SolrQuery query = new SolrQuery();
query.add("fq","{!geofilt}");
query.add("spatial","true");
query.add("fl","*,dist:geodist()");//设置,距离比较完成之后,返回相差的距离,数据放在dist字段中
query.add("sort","geodist() asc");//距离排序
query.add("pt","45.17614,-93.87341");//此处放发起查询请求的用户的位置
query.add("sfield","latLon");//数据库中存放用于比较的经纬度的字段
query.add("d","10000");//设置返回多少距离内的用户(具体单位是啥,还哦不太清楚)


java后台系统查询solr数据(备注:此java项目是springboot项目)

1 封装一个查询solr数据的基本方法

package com.chuang.foundation.solr;

import java.util.List;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
/**
*
* Copyright © 2018 Chuang Network studio. Tech Ltd. All rights reserved.
*
* https://ourtool.cn *
* @Description:    TODO
*
* @author          quan
* @param <T>
*
* @Date            2018年2月3日 上午10:06:50
*/
@Service
public class SolrService<T> {

private String solrUrl = http://localhost:8983/solr/;  //solr系统地址:

private String solrCore = collection1; //solr的core名称

/**
*
* @Title:        querySolr
* @Description:  TODO
* @param:        @param solrQuery
* @param:        @param type 用于接收数据的对象
* @param:        @return
* @return:       List
* @throws
* @Date          2018年2月3日 下午8:05:12
*/
public <T> List querySolr(SolrQuery solrQuery, Class<T> type){
try {
HttpSolrServer solrServer = new HttpSolrServer(urlString);
QueryResponse queryResponse = solrServer.query(solrQuery);
SolrDocumentList solrDocumentList = queryResponse.getResults();
List<T> list = queryResponse.getBeans(type);
return list;
} catch (Exception e) {
e.printStackTrace();

13b2e
return null;
}

}
}


2 接收数据的实体类(此实体类包含hibernate的注解和solr的注解【@Field,加了次注解才可以通过java查询出来】)

package com.chuang.zzhl.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.apache.commons.lang.StringUtils;
import org.apache.solr.client.solrj.beans.Field;
import org.hibernate.envers.Audited;

import com.chuang.foundation.module.domain.BaseEntity;
/**
*
* Copyright © 2018 Chuang Network studio. Tech Ltd. All rights reserved.
*
* https://ourtool.cn *
* @Package: com.chuang.zzhl.domain
* @author: quan
* @date: 2018年1月27日 下午4:45:30
*/
@Entity
@Table(name="T_ZZHL_WX_USER_INFO")
@Audited
public class WxUserInfoEntity extends BaseEntity{

/**
*
*/
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "WX_USER_INFO_ID")
@Field
private Long wxUserInfoId;

@Field
@Column(name = "LAT_LON")
private String latLon;

@Transient
private double dist;

public double getDist() {
return dist;
}

public void setDist(double dist) {
this.dist = dist;
}

public String getLatLon() {
return latLon;
}

public void setLatLon(String latLon) {
this.latLon = latLon;
}

@Field
@Column(name = "USER_NO")
private String userNo;

@Column(name = "OPENID")
private String openid;

@Field
@Column(name = "NICK_NAME")
private String nickName;

@Column(name = "AVATAR_URL")
private String avatarUrl;//用户图像

@Column(name = "LANGUAGE")
@Field
private String language;

@Column(name = "GENDER")
@Field
private String gender;

@Column(name = "COUNTRY")
@Field
private String country;

@Column(name = "PROVINCE")
@Field
private String province;

@Column(name = "CITY")
@Field
private String city;

@Column(name = "CODE")
private String code;

@Field
@Column(name = "BIRTH_YEAR")
private String birthYear; //出生年份

@Column(name = "EDUCATION_CODE")
private String educationCode;// 学历  码表  codeTableId=4

@Column(name = "ANNUAL_SALARY")
private String annualSalary;//年薪

@Column(name = "CONSTELLATION_CODE")
private String constellationCode;//星座  码表  codeTableId=5

@Column(name = "LABEL_CODE")
private String labelCode;//标签  码表   男士标签codeTableId=6     女士标签codeTableId=7

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserOne#getBirthYear()
*/

public String getBirthYear() {
return birthYear;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserOne#setBirthYear(java.lang.String)
*/

public void setBirthYear(String birthYear) {
this.birthYear = birthYear;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserOne#getEducationCode()
*/

public String getEducationCode() {
return educationCode;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserOne#setEducationCode(java.lang.String)
*/

public void setEducationCode(String educationCode) {
this.educationCode = educationCode;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserOne#getAnnualSalary()
*/

public String getAnnualSalary() {
return annualSalary;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserOne#setAnnualSalary(java.lang.String)
*/

public void setAnnualSalary(String annualSalary) {
this.annualSalary = annualSalary;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserOne#getConstellationCode()
*/

public String getConstellationCode() {
return constellationCode;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserOne#setConstellationCode(java.lang.String)
*/

public void setConstellationCode(String constellationCode) {
this.constellationCode = constellationCode;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserOne#getLabelCode()
*/

public String[] getLabelCode() {
return StringUtils.split(labelCode, ",");
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserOne#setLabelCode(java.lang.String[])
*/

public void setLabelCode(String[] labelCode) {
this.labelCode = StringUtils.join(labelCode,",");
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#getOpenid()
*/

public String getOpenid() {
return openid;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#setOpenid(java.lang.String)
*/

public void setOpenid(String openid) {
if(!StringUtils.isEmpty(openid)){
this.openid = openid;
}
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#getAvatarUrl()
*/

public String getAvatarUrl() {
return avatarUrl;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#setAvatarUrl(java.lang.String)
*/

public void setAvatarUrl(String avatarUrl) {
this.avatarUrl = avatarUrl;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#getLanguage()
*/

public String getLanguage() {
return language;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#setLanguage(java.lang.String)
*/

public void setLanguage(String language) {
this.language = language;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#getGender()
*/

public String getGender() {
return gender;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#setGender(java.lang.Integer)
*/

public void setGender(String gender) {
this.gender = gender;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#getCountry()
*/

public String getCountry() {
return country;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#setCountry(java.lang.String)
*/

public void setCountry(String country) {
this.country = country;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#getProvince()
*/

public String getProvince() {
return province;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#setProvince(java.lang.String)
*/

public void setProvince(String province) {
this.province = province;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#getCity()
*/

public String getCity() {
return city;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#setCity(java.lang.String)
*/

public void setCity(String city) {
this.city = city;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#getCode()
*/

public String getCode() {
return code;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#setCode(java.lang.String)
*/

public void setCode(String code) {
this.code = code;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#getNickName()
*/

public String getNickName() {
return nickName;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#setNickName(java.lang.String)
*/

public void setNickName(String nickName) {
this.nickName = nickName;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#getWxUserInfoId()
*/

public Long getWxUserInfoId() {
return wxUserInfoId;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#setWxUserInfoId(java.lang.Long)
*/

public void setWxUserInfoId(Long wxUserInfoId) {
this.wxUserInfoId = wxUserInfoId;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#getUserNo()
*/

public String getUserNo() {
return userNo;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserInfo#setUserNo(java.lang.String)
*/

public void setUserNo(String userNo) {
this.userNo = userNo;
}

@Column(name = "RESIDENCE_LOCATION")
private String residenceLocation; //居住位置

@Column(name = "WORKING_LOCATION")
private String workingLocation; //工作位置

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserTwo#getResidenceLocation()
*/

public String getResidenceLocation() {
return residenceLocation;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserTwo#setResidenceLocation(java.lang.String)
*/

public void setResidenceLocation(String residenceLocation) {
this.residenceLocation = residenceLocation;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserTwo#getWorkingLocation()
*/

public String getWorkingLocation() {
return workingLocation;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserTwo#setWorkingLocation(java.lang.String)
*/

public void setWorkingLocation(String workingLocation) {
this.workingLocation = workingLocation;
}

@Column(name = "HEIGHT")
private Long height; //身高 厘米

@Column(name = "WEIGHT")
private Long weight; //体重 公斤

//户籍
@Column(name = "HOUSEHOLD_REGISTER")
private String householdRegister;

//籍贯
@Column(name = "PLACE_OF_ORIGIN")
private String placeOfOrigin;

//婚姻状况  码表  codeTableId=8
@Column(name = "MARRIAGE_CODE")
private String marriageCode;

//车房情况 码表  codeTableId=9
@Column(name = "GARAGE_CODE")
private String garageCode;

public Long getHeight() {
return height;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserThree#setHeight(java.lang.Long)
*/

public void setHeight(Long height) {
this.height = height;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserThree#getWeight()
*/

public Long getWeight() {
return weight;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserThree#setWeight(java.lang.Long)
*/

public void setWeight(Long weight) {
this.weight = weight;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserThree#getHouseholdRegister()
*/

public String getHouseholdRegister() {
return householdRegister;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserThree#setHouseholdRegister(java.lang.String)
*/

public void setHouseholdRegister(String householdRegister) {
this.householdRegister = householdRegister;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserThree#getPlaceOfOrigin()
*/

public String getPlaceOfOrigin() {
return placeOfOrigin;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserThree#setPlaceOfOrigin(java.lang.String)
*/

public void setPlaceOfOrigin(String placeOfOrigin) {
this.placeOfOrigin = placeOfOrigin;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserThree#getMarriageCode()
*/

public String getMarriageCode() {
return marriageCode;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserThree#setMarriageCode(java.lang.String)
*/

public void setMarriageCode(String marriageCode) {
this.marriageCode = marriageCode;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserThree#getGarageCode()
*/

public String getGarageCode() {
return garageCode;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserThree#setGarageCode(java.lang.String)
*/

public void setGarageCode(String garageCode) {
this.garageCode = garageCode;
}

//毕业院校
@Column(name = "GRADUATION_UNIVERSITIES")
private String graduationUniversities;

//所在行业
@Column(name = "INDUSTRY")
private String industry;

//工作职位
@Column(name = "JOB_POSITION")
private String jobPosition;

//本人性格
@Column(name = "MY_PERSONALITY")
private String myPersonality;

//择偶要求
@Column(name = "MATE_SELECTION")
private String mateSelection;

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFour#getGraduationUniversities()
*/

public String getGraduationUniversities() {
return graduationUniversities;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFour#setGraduationUniversities(java.lang.String)
*/

public void setGraduationUniversities(String graduationUniversities) {
this.graduationUniversities = graduationUniversities;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFour#getIndustry()
*/

public String getIndustry() {
return industry;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFour#setIndustry(java.lang.String)
*/

public void setIndustry(String industry) {
this.industry = industry;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFour#getJobPosition()
*/

public String getJobPosition() {
return jobPosition;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFour#setJobPosition(java.lang.String)
*/

public void setJobPosition(String jobPosition) {
this.jobPosition = jobPosition;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFour#getMyPersonality()
*/

public String getMyPersonality() {
return myPersonality;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFour#setMyPersonality(java.lang.String)
*/

public void setMyPersonality(String myPersonality) {
this.myPersonality = myPersonality;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFour#getMateSelection()
*/

public String getMateSelection() {
return mateSelection;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFour#setMateSelection(java.lang.String)
*/

public void setMateSelection(String mateSelection) {
this.mateSelection = mateSelection;
}

//半身照、全身照 是否公开  codeTableId=3
@Column(name = "IS_BODY_PIC")
private String isBodyPic;

//半身照
@Column(name = "BODY_PIC")
private String bodyPic;

//全身照
@Column(name = "FULL_BODY_PIC")
private String fullBodyPic;

//身份证正面照片
@Column(name = "ID_CARD_POSITIVE_PIC")
private String idCardPositivePic;

//身份证反面照片
@Column(name = "ID_CARD_NEGATIVE_PIC")
private String idCardNegativePic;

//学历照片
@Column(name = "EDUCATION_PIC")
private String educationPic;

//房产证照片
@Column(name = "HOME_PIC")
private String homePic;

//产权证照片
@Column(name = "PROPERTY_RIGHT_PIC")
private String propertyRightPic;

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#getIsBodyPic()
*/

public String getIsBodyPic() {
return isBodyPic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#setIsBodyPic(java.lang.String)
*/

public void setIsBodyPic(String isBodyPic) {
this.isBodyPic = isBodyPic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#getBodyPic()
*/

public String getBodyPic() {
return bodyPic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#setBodyPic(java.lang.String)
*/

public void setBodyPic(String bodyPic) {
this.bodyPic = bodyPic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#getFullBodyPic()
*/

public String getFullBodyPic() {
return fullBodyPic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#setFullBodyPic(java.lang.String)
*/

public void setFullBodyPic(String fullBodyPic) {
this.fullBodyPic = fullBodyPic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#getIdCardPositivePic()
*/

public String getIdCardPositivePic() {
return idCardPositivePic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#setIdCardPositivePic(java.lang.String)
*/

public void setIdCardPositivePic(String idCardPositivePic) {
this.idCardPositivePic = idCardPositivePic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#getIdCardNegativePic()
*/

public String getIdCardNegativePic() {
return idCardNegativePic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#setIdCardNegativePic(java.lang.String)
*/

public void setIdCardNegativePic(String idCardNegativePic) {
this.idCardNegativePic = idCardNegativePic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#getEducationPic()
*/

public String getEducationPic() {
return educationPic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#setEducationPic(java.lang.String)
*/

public void setEducationPic(String educationPic) {
this.educationPic = educationPic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#getHomePic()
*/

public String getHomePic() {
return homePic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#setHomePic(java.lang.String)
*/

public void setHomePic(String homePic) {
this.homePic = homePic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#getPropertyRightPic()
*/

public String getPropertyRightPic() {
return propertyRightPic;
}

/* (non-Javadoc)
* @see com.chuang.zzhl.domain.WxUserFive#setPropertyRightPic(java.lang.String)
*/

public void setPropertyRightPic(String propertyRightPic) {
this.propertyRightPic = propertyRightPic;
}

}


3 实战例子

package com.chuang.zzhl.controller;

import java.util.List;

import org.apache.solr.client.solrj.SolrQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.chuang.foundation.ajax.AjaxObj;
import com.chuang.foundation.ajax.AjaxObjDTO;
import com.chuang.foundation.module.controller.ZzhlBaseController;
import com.chuang.foundation.solr.SolrService;
import com.chuang.zzhl.domain.WxUserInfoEntity;
/**
*
* Copyright © 2018 Chuang Network studio. Tech Ltd. All rights reserved.
*
* https://ourtool.cn *
* @Description: TODO
*
* @author quan
*
* @Date 2018年2月3日 上午10:16:14
*/
@RestController
public class SolrController extends ZzhlBaseController{

@Autowired
private SolrService solrService;

@RequestMapping(value="/test.ao", method=RequestMethod.GET)
public List loadAll(){
SolrQuery query = new SolrQuery();
query.set("q","nickName:陈可");
List<WxUserInfoEntity> list = solrService.querySolr(query, WxUserInfoEntity.class);
return list;
}

/**
*
* @Title: 这是一个设置参数的例子,具体的可参照官方文档
* @Description: TODO
* @param:
* @return: void
* @throws
* @author quan
* @Date 2018年2月3日 下午8:10:48
*/
private void searchParams() {
//经纬度排序参数设置 SolrQuery query = new SolrQuery(); query.add("fq","{!geofilt}"); query.add("spatial","true"); query.add("fl","*,dist:geodist()");//设置,距离比较完成之后,返回相差的距离,数据放在dist字段中 query.add("sort","geodist() asc");//距离排序 query.add("pt","45.17614,-93.87341");//此处放发起查询请求的用户的位置 query.add("sfield","latLon");//数据库中存放用于比较的经纬度的字段 query.add("d","10000");//设置返回多少距离内的用户(具体单位是啥,还哦不太清楚)
}

}


完美收官,记录再次,以供后续查阅。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  solr 搜索引擎
相关文章推荐