solr学习安装随笔

1.案例:实现solr电商的搜索功能

2.解决方案:

2.1方案一

  使用数据库搜索,关系型数据库mysql、oracle实现搜索商品信息,标题中包含关键的商品。
    select * from 商品表 where 商品标签 like ‘%搜索信息%’
  海量数据中搜索速度非常慢,顺序扫描。
  like是否能使用索引?
  ’%%’:索引不能使用这种形式
  关键词%:可以使用索引
  如果字段的长度大于255字符不能使用索引

2.2 方案二

  使用全文检索的方式进行检索:在整篇文章中快速检索某些关键词提出的解决方案。例如百度搜索,电商搜索
  好处:快,准确、

  数据库中搜索Java关键词:会搜索到例如JavaScript
  全文检索搜索java关键词:javascript不会检索出来

技术方案:

2.21.lucene:使用java开发的全文检索工具包。需要在它的基础上二次开发。需要自己解决集群、缓存、大数据的问题
2.2.2.solr:使用java开发的全文检索服务器。基于lucene的api开发。只需配置就可以运用的全文检索

3.什么是solr

  solr是Apache下的顶级开源项目,采用java开发,是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。 –百度百科

4.solr的安装及配置

4.1 solr的运行环境

  需要安装jdk:1.7.0以上版本
  tomcat要求7以上
  操作版本:linux/windows

4.2 solr 和tomcat集成

  1.安装jdk,tomcat
  2.
这里写图片描述
  将dist目录下的solr-4.7.2.war文件放到tomcat下webapp目录下,改名为solr.war(为了方便访问,不是必须的)
  3.解压solr.war(可以自己解压,tomcat自动解压)
  4.删除solr.war
  5.把solr-4.7.2\example\lib\ext下的所有jar添加到solr工程中apache-tomcat-8.5.12\webapps\solr\WEB-INF\lib下
  6.创建一个solrhome(solr所有的配置文件)solr解压路径下的如下文件就是一个solrhome
这里写图片描述
  将该文件复制到其他路径下改名为solrhome(为了便于理解)
这里写图片描述
  7.配置solehome的文件地址:修改solr工程web.xml 文件
  打开web.xml找到如下位置
这里写图片描述
  将env-entry-value改为你的solrhome路径
这里写图片描述
  索引库存放的位置
这里写图片描述
  两个关键配置文件
这里写图片描述
  8.启动tomcat
  访问http://127.0.0.1:8080/solr/路径出现如下页面
  搭建完成!
这里写图片描述

5.后台管理页面

5.1 Analyzer

这里写图片描述
  查看当前索引库和分词效果
  (1)域、字段列表,所有的域都是在schema.xml中定义,应该先定义后使用
如果想修改育德定义以及自定义与需要修改schema.xml
  (2)查看域的分词效果
对于英文支持尚可,中文支持差

5.2 Document

  索引库维护功能,索引库进行增删改功能
这里写图片描述

5.2.1 添加文档

这里写图片描述
  (1)在solr中一条记录就是一个文档
  (2)文档中可以使用json数据格式描述,key就是域,valuye 值
  (3)在solr中每个文档必须有一个域,类似关系型数据库中主键,不可重复
  (4)域必须先定义后使用。域都是在schema.xml中定义
这里写图片描述

5.2.2 更新文档

  添加一个新的文档,如果id重复会把原来的数据覆盖掉

5.2.3 删除文档
5.2.3.1 根据id删除

这里写图片描述

5.2.3.1 根据查询删除

  *:* 匹配所有文档
  域名:关键字 例如:id:change.me

这里写图片描述

5.3 Query

  查询功能
这里写图片描述
这里写图片描述

6.slorJ管理索引库

  solr提供的一个客户端。就是一个jar包,把jar添加到工程中整合solr服务
这里写图片描述
  第一步 创建java工程
  第二步 导入需要的jar
这里写图片描述
这里写图片描述
  第三步 创建java类进行测试

6.1 添加文档

(1)创建一个连接solr服务的客户端对象 SolrServer对象
(2)创建一个文档对象
(3)向文档对象中添加域
(3)提交文档
private static void add() throws IOException, SolrServerException {
        SolrServer solrServer = new HttpSolrServer("http://127.0.0.1:8080/solr/");
        SolrInputDocument solrInputFields  = new SolrInputDocument();
        solrInputFields.addField("id","新id");
        solrInputFields.addField("title","新title");
        solrServer.add(solrInputFields);
        solrServer.commit();
    }

6.1 删除文档

   private static void deletesolr() throws IOException, SolrServerException {
        SolrServer solrServer = new HttpSolrServer("http://127.0.0.1:8080/solr/");
        //通过id删除
//        solrServer.deleteById("新id");
        //通过查询删除
        solrServer.deleteByQuery("title:新title");
        solrServer.commit();
    }

6.2 查询文档文档

private static void query() throws SolrServerException {
        SolrServer solrServer = new HttpSolrServer("http://127.0.0.1:8080/solr/");
        QueryResponse response = null;
        SolrQuery solrParams = new SolrQuery();
        solrParams.set("q", "title:新title");
        solrParams.set("start", 0);
        solrParams.set("rows", 5);
        solrParams.set("sort", "id asc");
        SolrDocumentList list = null;
        response = solrServer.query(solrParams);
        if(response!=null){
            list = response.getResults();
            for (SolrDocument entries : list) {
                System.out.println("id = "+entries.get("id"));
                System.out.println("title = "+entries.get("title"));
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值