solr学习安装随笔

来源:互联网 发布:无锡软件开发公司 编辑:程序博客网 时间:2024/06/11 02:02

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"));            }        }    }
原创粉丝点击