Solr搜索引擎

1、solr的下载地址为http://pan.baidu.com/s/1kUAJYmF

2、solr的安装

solr下载完毕后解压开,使用前需要配置jdk1.8的环境变量

选中bin目录下的startup.bat启动就可以。

3、solr的使用

solr访问地址http://localhost:11011/solr/index.html

175118_shfG_2404345.png

1)在springboot里面配置solr的信息

  data:
    solr:
      host: http://127.0.0.1:11011/solr/basecode
      zk-host: 
      repositories:
        enabled: true

2)在solrhome里面建立solr-data-config.xml

<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
  -->

<dataConfig>
<dataSource name="basecode" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/selfdb" user="root" password="root" batchSize="-1" />
  <document>
    <entity pk="id" name="Province" query="select    UUID() id,
                                                id provinceId,
                                                name provinceName,
                                                code provinceCode,
                                                des provinceDes,
                                                spell_no provinceSpellNo,
                                                wubi_no provinceWubiNo
                                        from md_basecode where object_id=26 and deleted_flag=0" dataSource="basecode" >
        <field column="id" name="id"/>
        <field column="provinceId" name="provinceId"/>
     <field column="provinceName" name="provinceName"/>
        <field column="provinceCode" name="provinceCode"/>
        <field column="provinceDes" name="provinceDes"/>
        <field column="provinceSpellNo" name="provinceSpellNo"/>
        <field column="provinceWubiNo" name="provinceWubiNo"/>
    </entity>
    <entity pk="id" name="City" query="select    UUID() id,
                                                id cityId,
                                                name cityName,
                                                code cityCode,
                                                des cityDes,
                                                spell_no citySpellNo,
                                                wubi_no cityWubiNo
                                        from md_basecode where object_id=27 and deleted_flag=0" dataSource="basecode" >
        <field column="id" name="id"/>
        <field column="cityId" name="cityId"/>
     <field column="cityName" name="cityName"/>
        <field column="cityCode" name="cityCode"/>
        <field column="cityDes" name="cityDes"/>
        <field column="citySpellNo" name="citySpellNo"/>
        <field column="cityWubiNo" name="cityWubiNo"/>
    </entity>
    <entity pk="id" name="County" query="select    UUID() id,
                                                id countyId,
                                                name countyName,
                                                code countyCode,
                                                des countyDes,
                                                spell_no countySpellNo,
                                                wubi_no countyWubiNo
                                        from md_basecode where object_id=28 and deleted_flag=0" dataSource="basecode" >
        <field column="id" name="id"/>
        <field column="countyId" name="countyId"/>
     <field column="countyName" name="countyName"/>
        <field column="countyCode" name="countyCode"/>
        <field column="countyDes" name="countyDes"/>
        <field column="countySpellNo" name="countySpellNo"/>
        <field column="countyWubiNo" name="countyWubiNo"/>
    </entity>
  </document>
</dataConfig>
 

3)controller

package com.self.activity.controller;

import java.util.List;
import java.util.UUID;

import javax.annotation.Resource;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSON;
import com.self.activity.sdk.bean.PageBean;
import com.self.activity.sdk.bean.Result;
import com.self.activity.sdk.util.Loggers;
import com.self.activity.sdk.util.PatternUtil;
import com.self.activity.service.ProvinceService;
import com.self.activity.vo.ProvinceForSolr;
import com.self.activity.vo.QueryCustParam;
import com.self.activity.vo.QueryCustResult;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@RestController
@RequestMapping("address")
@Api(description="地址管理")
public class AddressController {
    @Resource
    private ProvinceService provinceService;
    @ApiOperation(value="省solr查询",notes="省solr查询接口")
    @ApiImplicitParams({
        @ApiImplicitParam(name="context",required=false,value = "名称",dataType="String",paramType="query"),
        @ApiImplicitParam(name="page",required=false,value = "页码(从0开始)",dataType="Int",paramType="query"),
        @ApiImplicitParam(name="size",required=false,value = "每页条数",dataType="Int",paramType="query"),
        @ApiImplicitParam(name = "TK_BUSINESS_SERIALID", value = "交易流水", required = true,dataType="String",paramType="header",defaultValue="11111"),
        @ApiImplicitParam(name = "TK_REQUEST_SYS_CODE", value = "请求方系统编码", required = false,dataType="String",paramType="header",defaultValue="22222"),
        @ApiImplicitParam(name = "TK_REQUEST_MODULE_CODE", value = "请求方模块编码", required = false,dataType="String",paramType="header",defaultValue="33333"),
        @ApiImplicitParam(name = "TK_REQUEST_NODE_IP", value = "请求方节点IP", required = false,dataType="String",paramType="header",defaultValue="44444"),
        @ApiImplicitParam(name = "Accept", value = "接收属性", required = true,dataType="String",paramType="header",defaultValue="application/json"),
        @ApiImplicitParam(name = "Accept-Charset", value = "接收字符集", required = true,dataType="String",paramType="header",defaultValue="utf-8"),
        @ApiImplicitParam(name = "Content-Type", value = "内容类型", required = true,dataType="String",paramType="header",defaultValue="application/json; charset=UTF-8")
    })
    @RequestMapping(value="/province",method=RequestMethod.GET,produces="application/json;charset='UTF-8'")
    public Result<List<ProvinceForSolr>> searchPro(@RequestParam(required=true) String context,Pageable pageable,@RequestHeader HttpHeaders headers){
        Page<ProvinceForSolr> data;
        if(PatternUtil.isChinese(context.subSequence(0, 1).toString())){
            data=provinceService.findProvinceByProvinceNameStartingWithOrderByProvinceNameDesc(context, pageable);
        }else{
            data=provinceService.findProvinceByProvinceSpellNoStartingWithOrderByProvinceNameDesc(context, pageable);
        }
        Result<List<ProvinceForSolr>> result=new Result<>("0",data.getContent());
        PageBean pageBean=new PageBean();
        pageBean.setNumber((long)pageable.getPageNumber()+1);
        pageBean.setOffset((long)pageable.getOffset());
        pageBean.setTotalElements((long)data.getTotalElements());
        pageBean.setTotalPages((long)data.getTotalPages());
        pageBean.setSize((long)data.getSize());
        result.setPage(pageBean);
        return result;
    }
    @ApiOperation(value="省solr插入",notes="省solr插入接口")
    @ApiImplicitParams({
        @ApiImplicitParam(name="context",required=true,value = "省对象",dataType="ProvinceForSolr",paramType="body"),
        @ApiImplicitParam(name = "TK_BUSINESS_SERIALID", value = "交易流水", required = true,dataType="String",paramType="header",defaultValue="11111"),
        @ApiImplicitParam(name = "TK_REQUEST_SYS_CODE", value = "请求方系统编码", required = false,dataType="String",paramType="header",defaultValue="22222"),
        @ApiImplicitParam(name = "TK_REQUEST_MODULE_CODE", value = "请求方模块编码", required = false,dataType="String",paramType="header",defaultValue="33333"),
        @ApiImplicitParam(name = "TK_REQUEST_NODE_IP", value = "请求方节点IP", required = false,dataType="String",paramType="header",defaultValue="44444"),
        @ApiImplicitParam(name = "Accept", value = "接收属性", required = true,dataType="String",paramType="header",defaultValue="application/json"),
        @ApiImplicitParam(name = "Accept-Charset", value = "接收字符集", required = true,dataType="String",paramType="header",defaultValue="utf-8"),
        @ApiImplicitParam(name = "Content-Type", value = "内容类型", required = true,dataType="String",paramType="header",defaultValue="application/json; charset=UTF-8")
    })
    @RequestMapping(value="/province",method=RequestMethod.POST,produces="application/json;charset='UTF-8'")
    public Result<ProvinceForSolr> savePro(@RequestBody(required=true) ProvinceForSolr context,@RequestHeader HttpHeaders headers){
        context.setId(UUID.randomUUID().toString().replace("-", ""));
        provinceService.save(context);
        Result<ProvinceForSolr> result=new Result<ProvinceForSolr>("0",context);
        return result;
    }
    @ApiOperation(value="省solr删除",notes="省solr删除接口")
    @ApiImplicitParams({
        @ApiImplicitParam(name="id",required=true,value = "省对象",dataType="String",paramType="path"),
        @ApiImplicitParam(name = "TK_BUSINESS_SERIALID", value = "交易流水", required = true,dataType="String",paramType="header",defaultValue="11111"),
        @ApiImplicitParam(name = "TK_REQUEST_SYS_CODE", value = "请求方系统编码", required = false,dataType="String",paramType="header",defaultValue="22222"),
        @ApiImplicitParam(name = "TK_REQUEST_MODULE_CODE", value = "请求方模块编码", required = false,dataType="String",paramType="header",defaultValue="33333"),
        @ApiImplicitParam(name = "TK_REQUEST_NODE_IP", value = "请求方节点IP", required = false,dataType="String",paramType="header",defaultValue="44444"),
        @ApiImplicitParam(name = "Accept", value = "接收属性", required = true,dataType="String",paramType="header",defaultValue="application/json"),
        @ApiImplicitParam(name = "Accept-Charset", value = "接收字符集", required = true,dataType="String",paramType="header",defaultValue="utf-8"),
        @ApiImplicitParam(name = "Content-Type", value = "内容类型", required = true,dataType="String",paramType="header",defaultValue="application/json; charset=UTF-8")
    })
    @RequestMapping(value="/province/{id}",method=RequestMethod.DELETE,produces="application/json;charset='UTF-8'")
    public Result<ProvinceForSolr> deletePro(@PathVariable String id,@RequestHeader HttpHeaders headers){
        provinceService.delete(id);
        Result<ProvinceForSolr> result=new Result<ProvinceForSolr>("0");
        return result;
    }
    @ApiOperation(value="省solr更新",notes="省solr更新接口")
    @ApiImplicitParams({
        @ApiImplicitParam(name="id",required=true,value = "省对象",dataType="String",paramType="path"),
        @ApiImplicitParam(name="provinceForSolr",required=true,value = "省对象",dataType="ProvinceForSolr",paramType="body"),
        @ApiImplicitParam(name = "TK_BUSINESS_SERIALID", value = "交易流水", required = true,dataType="String",paramType="header",defaultValue="11111"),
        @ApiImplicitParam(name = "TK_REQUEST_SYS_CODE", value = "请求方系统编码", required = false,dataType="String",paramType="header",defaultValue="22222"),
        @ApiImplicitParam(name = "TK_REQUEST_MODULE_CODE", value = "请求方模块编码", required = false,dataType="String",paramType="header",defaultValue="33333"),
        @ApiImplicitParam(name = "TK_REQUEST_NODE_IP", value = "请求方节点IP", required = false,dataType="String",paramType="header",defaultValue="44444"),
        @ApiImplicitParam(name = "Accept", value = "接收属性", required = true,dataType="String",paramType="header",defaultValue="application/json"),
        @ApiImplicitParam(name = "Accept-Charset", value = "接收字符集", required = true,dataType="String",paramType="header",defaultValue="utf-8"),
        @ApiImplicitParam(name = "Content-Type", value = "内容类型", required = true,dataType="String",paramType="header",defaultValue="application/json; charset=UTF-8")
    })
    @RequestMapping(value="/province/{id}",method=RequestMethod.PUT,produces="application/json;charset='UTF-8'")
    public Result<ProvinceForSolr> alterPro(@PathVariable String id,@RequestBody ProvinceForSolr provinceForSolr, @RequestHeader HttpHeaders headers){
        provinceForSolr.setId(id);
        provinceService.save(provinceForSolr);
        Result<ProvinceForSolr> result=new Result<ProvinceForSolr>("0",provinceForSolr);
        return result;
    }
}
 

4)service

public interface ProvinceService extends SolrCrudRepository<ProvinceForSolr, String>{
    public Page<ProvinceForSolr> findProvinceByProvinceNameStartingWithOrderByProvinceNameDesc(String context,Pageable page);
    public Page<ProvinceForSolr> findProvinceByProvinceCodeStartingWithOrderByProvinceNameDesc(String context,Pageable page);
    public Page<ProvinceForSolr> findProvinceByProvinceSpellNoStartingWithOrderByProvinceNameDesc(String context,Pageable page);
    public ProvinceForSolr save(ProvinceForSolr provinceForSolr);
    public void delete(String id);
}

5)model

package com.self.activity.vo;

import org.apache.solr.client.solrj.beans.Field;
import org.springframework.data.annotation.Id;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

@ApiModel(value="ProvinceForSolr")
public class ProvinceForSolr {
    @Id
    @ApiModelProperty(value="solr序号",hidden=true)
    private String id;
    
    @Field
    @ApiModelProperty(value="数据库里的id")
    private Integer provinceId;
    
    @Field
    @ApiModelProperty(value="省名")
    private String provinceName;
    
    @Field
    @ApiModelProperty(value="省编码")
    private String provinceCode;
    
    @Field
    @ApiModelProperty(value="省描述")
    private String provinceDes;
    
    @Field
    @ApiModelProperty(value="省拼音码")
    private String provinceSpellNo;
    
    @Field
    @ApiModelProperty(value="省五笔码")
    private String provinceWubiNo;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public Integer getProvinceId() {
        return provinceId;
    }

    public void setProvinceId(Integer provinceId) {
        this.provinceId = provinceId;
    }

    public String getProvinceName() {
        return provinceName;
    }

    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }

    public String getProvinceCode() {
        return provinceCode;
    }

    public void setProvinceCode(String provinceCode) {
        this.provinceCode = provinceCode;
    }

    public String getProvinceDes() {
        return provinceDes;
    }

    public void setProvinceDes(String provinceDes) {
        this.provinceDes = provinceDes;
    }

    public String getProvinceSpellNo() {
        return provinceSpellNo;
    }

    public void setProvinceSpellNo(String provinceSpellNo) {
        this.provinceSpellNo = provinceSpellNo;
    }

    public String getProvinceWubiNo() {
        return provinceWubiNo;
    }

    public void setProvinceWubiNo(String provinceWubiNo) {
        this.provinceWubiNo = provinceWubiNo;
    }
    
}
 

以上为如何使用。那么solr如何说以及如何与如何想和信念相互辉映呢

首先与第三信念“专业”是相辅相成的。如何想呢就是让工作方面更专业。

如何说呢?

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果

Solr是一个高性能,采用Java5开发,

SolrSolr

基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎

 

转载于:https://my.oschina.net/Seaside20151225/blog/745321

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值