使用solr搭建搜索服务器

栏目: 后端 · 发布时间: 6年前

内容简介:研究了三天,因为想直接部署成分布式的,网上的各种教程都是太过久远的了,绕来绕去就死在配置文件里了所以先不想做分布式的问题了,先搭一个单机版的,压力上来了再装

使用solr搭建搜索服务器

前言

solr 是一个用 java 写的搜索服务器,支持分布式集群部署等各种特性,现在看来应该是 目前使用范围最广的搜索服务器了

研究了三天,因为想直接部署成分布式的,网上的各种教程都是太过久远的了,绕来绕去就死在配置文件里了

所以先不想做分布式的问题了,先搭一个单机版的,压力上来了再装 zookeeper 做分布式

安装

系统为 CentOS7

  1. 新建一个专门负责搜索服务的用户search,将 下载 的solr二进制包放在这个用户的家目录中,我这里是直接把本地压缩包扔进了服务器中

    // 需要先建立一个专门负责搜索服务的账户: search
    useradd search
         
         
    // 在search家目录下新建服务文件夹
    mkdir /home/search/search-service
         
         
    // 将本地代码上传到服务文件夹下
    scp solr-7.4.0.zip root@testing:/home/search/search-service/
  2. 解压 solr-7.4.0.zip

    // 进入目录
    cd /home/search/search-service/
     
     
     
    // 解压缩
    unzip solr-7.4.0.zip
     
    // 将服务权限赋给search
    chown -R search:search /home/search/search-service/solr-7.4.0/server/
    
  3. 进入solr目录

       cd solr-7.4.0/
    
  4. 新建 /usr/java 目录,在其中下载 jdk

     http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html
         
         
     mkdir /usr/java
     // 我是从本地将jdk上传到服务器中
     scp jdk-8u181-linux-x64.tar.gz root@testing:/usr/java/
    
  5. 解压缩jdk包

     cd /usr/java/   
     tar -zxvf jdk-8u181-linux-x64.tar.gz
    
  6. 配置环境变量

      vim /etc/profile
          
          
      // 在最后添加环境变量,其中根据jdk版本修改JAVA_HOME和JRE_HOME
      #set java environment
      JAVA_HOME=/usr/java/jdk1.8.0_181
      JRE_HOME=/usr/java/jdk1.8.0_181/jre
      CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
      PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
      export JAVA_HOME JRE_HOME CLASS_PATH PATH
    
  7. 让修改生效

      source /etc/profile
    
  8. 验证jdk是否安装成功

      java -version
          
      // 如果有如下输出,证明安装成功
      java version "1.8.0_181"
      Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
      Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
    
  9. 启动solr节点

     // 切换用户
     su search
         
         
     // 进入solr根目录
     cd /home/search/search-service/solr.7.4.0/
         
         
     // 启动节点
     bin/solr start (可以使用 -p 8983 指定端口,默认是8983端口)
    

创建core

core是搜索的核心,可以把它理解为集合,比如我需要搜索用户和帖子,那么就需要创建两个core: usersarticles

        bin/solr create -c users  // 索引用户
        bin/solr create -c articles  // 索引文章

进入后台进行查看

      // 获得外网ip
      curl ip.gs
       
       
      // 在浏览器中访问后台
      http://ip:8983
       
       
      // 服务搭建完成后要关闭外部端口,从内网中访问
     

API

我第一个用的搜索服务器是 xunsearch ,需要做很多配置,我以为搜素软件都这样…233

但是实际上 solr 不需要这么麻烦,如果仅仅是单机版,简单的搜索配置完全可以使用 http 请求来设置

我们假设 solr 的后台地址为: http://localhost:8983/solr

core 名为 my_collection

  • 添加索引

    • 添加单个

      curl -X POST -H 'Content-Type: application/json' 'http://localhost:8983/solr/my_collection/update/json/docs' --data-binary '
         {
           "id": "1",
           "title": "Doc 1"
         }'
    • 添加多个

    curl -X POST -H 'Content-Type: application/json' 'http://localhost:8983/solr/my_collection/update' --data-binary '
        [
          {
            "id": "1",
            "title": "Doc 1"
          },
          {
            "id": "2",
            "title": "Doc 2"
          }
        ]'
    • 要注意,仅仅添加后是无法搜索到文档的,还需要 commit 才可以
  • 更新索引

    curl -X POST -H 'Content-Type: application/json' 'http://localhost:8983/solr/my_collection/update' --data-binary '
      {
        "add": {
          "doc": {
            "id": "DOC1",
            "my_field": 2.3,
            "my_multivalued_field": [ "aaa", "bbb" ]   
          }
        },
        "add": {
          "commitWithin": 5000, 
          "overwrite": false,  
          "doc": {
            "f1": "v1", 
            "f1": "v2"
          }
        },
          
        "commit": {},
        "optimize": { "waitSearcher":false },
          
        "delete": { "id":"ID" },  
        "delete": { "query":"QUERY" } 
      }'

    可以看到,添加、commit删除等操作,都可以通过1次http请求来设置

  • 查询

查询的路径为 http://{$url}/select?q=xxx&sort=xxx&start=xxx&rows=xxx

参数q为查询主体,sort为 排序 方式,rows为查询行数,start为查询起始位置

例如 users 表中有 name 字段,

  • 我们需要查询 namesilsuer 的用户

    那么 参数 q=name:silsuer

  • 并且按照创建时间倒序查询

    参数 q=name:silsuer&sort=created_at desc

  • 每页查出10条数据,并且本次查第二页

    参数start的计算方式为: start=num*(page-1) -> start=10*(2-1)=10

    参数为: q=name:silsuer&sort=created_at desc&start=10&rows=10

  • 注意:上面的参数中的空格冒号之类的,需要url编码后使用

以上就是 solr 的基本用法.


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入解析Spring MVC与Web Flow

深入解析Spring MVC与Web Flow

Seth Ladd、Darren Davison、Steven Devijver、Colin Yates / 徐哲、沈艳 / 人民邮电出版社 / 2008-11 / 49.00元

《深入解析Spring MVCgn Web Flow》是Spring MVC 和Web Flow 两个框架的权威指南,书中包括的技巧和提示可以让你从这个灵活的框架中汲取尽可能多的信息。书中包含了一些开发良好设计和解耦的Web 应用程序的最佳实践,介绍了Spring 框架中的Spring MVC 和Spring Web Flow,以及着重介绍利用Spring 框架和Spring MVC 编写Web ......一起来看看 《深入解析Spring MVC与Web Flow》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器