Solr搜索引擎

一、solr的下載地址爲http://pan.baidu.com/s/1kUAJYmFhtml

二、solr的安裝java

solr下載完畢後解壓開,使用前須要配置jdk1.8的環境變量mysql

選中bin目錄下的startup.bat啓動就能夠。web

三、solr的使用spring

solr訪問地址http://localhost:11011/solr/index.htmlsql

1)在springboot裏面配置solr的信息數據庫

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

2)在solrhome裏面創建solr-data-config.xmlapache

<!--
  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 atjson

      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更爲豐富的查詢語言,同時實現了可配置、可擴展並對查詢性能進行了優化,而且提供了一個完善的功能管理界面,是一款很是優秀的全文搜索引擎

相關文章
相關標籤/搜索