热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

solr7.5的使用教程

目录1.下载2.启动3.tomcat呢?4.汉语分词器5.java使用1.下载https:lucene.apache.orgsolrmirrors-sol

目录

1.下载

2.启动

3.tomcat呢?

4.汉语分词器

5.java使用



1.下载

https://lucene.apache.org/solr/mirrors-solr-latest-redir.html点击这里下载

下载完目录结构大约是这样

2.启动

怎么启动?

启动有两种方式,solr从5.0开始里面就内嵌了jetty的嵌入式服务器启动。当然你也可以放到tomcat里去启动。

进入bin文件夹里,然后右键在此处打开命令行。

这就启动了,默认端口是8983.我们打开localhost:8983

 

可以看到已经启动成功了.到了solr的后台管理界面了.

有页面有服务,那么它实际上jetty启动的项目是在这里solr-7.5.0\server\solr-webapp\webapp

这里面有个要注意的地方.

就是两个概念.也就是

solr_home和solr_core.

solr_home相当于tomcat的webapp.

solr_core相当于里面的一个项目.

无论是tomcat启动solr,还是jetty启动solr,都相当于启动加载了一个solr_home.至于里面有没有solr_core,有几个solr_core,那这要看你准备部署几个搜索项目.

那么jetty启动的时候默认的solr_home是在这里solr-7.5.0\server\solr

它默认是这样的

这里面这六个文件,只有solr.xml才是solr_home所必须的。将来你可以换个文件夹作为solr_home,其他的可能不需要,但是请把这个solr.xml给复制到里面。它是必须的。

其他的东西实际上是没什么卵用的。

 接下来我们在localhost:8983里创建下solr_core。

点击Add Core的意思是我要创建一个叫做new_core的solr_core。要注意的是第二行,意思是该核心solr_core所处的文件夹是%solr_home%/new_core 。但实际上我们那个目录里面是没有这个文件夹的。所以直接点击确定肯定会报错。

我们需要新建个new_core的文件夹。

solr_home的必须文件是solr.xml

solr_core也有必须品,那就是配置。

在solr-7.5.0\server\solr\configsets\_default里。我们直接把里面的conf文件夹复制到新建的new_core里面。

然后在网站上点击添加,这样就添加了。

然后到这里:

 

3.tomcat呢?

用tomcat来启动怎么启动?

1.在tomcat下新建个项目,直接把\solr-7.5.0\server\solr-webapp\webapp这里面的东西复制进去。

2.但还要注意:需要把solr-7.5.0\server\lib下面的以metrics开头的jar包,和solr-7.5.0\server\lib\ext下面的所有jar包放到项目里面。

3.修改web.xml,把这段给注释了.


添加环境变量指向solr_home.你可以随便新建个文件夹把solr.xml给复制过来,就当是solr_home了

solr/homejava.lang.StringC:\\Users\\Administrator\\Desktop\\solrHome

这样才能启动成功。

4.汉语分词器

什么是搜索?

比如:“我喜欢唐老鸭”这句话存起来,为什么可以搜"唐老鸭"三个字就可以搜到“我喜欢唐老鸭”这句话?

搜索把句子拆成关键词语然后做成索引,则可以根据索引搜索到。

那么拆句怎么拆?这就需要分词器了.

然而我们处在中国,需要配置上汉语的分词器。

汉语的分词器叫做:IKAnalyzer,下载地址:https://download.csdn.net/download/dmw412724/12035637

下载下来,解压后目录大约是这样的:

如果你要配置汉语的分词器,则需要做到下面三件事情:

1.把里面俩jar包,放到项目WEB-INF/lib里.

2.把剩下三个文件放到项目WEB-INF/classes下面(如果没有classes文件夹,新建即可)

3.添加分词器到核心配置文件里.配置文件是哪个?是这个

随便在里面找个地方添加以下内容:

这个文件里面的一些属性是什么意思?请参考我的另外一篇博客:点击这里,你最好先看完这个

那么现在汉语分词器就安装好了.可以重新启动起来. 

5.java使用

我们假设一个需求:

现在把商品存到搜索服务器里.

商品goods有几个属性:

goodsidID
goodstitle商品标题
goodspics商品图片
createTime创建时间

搜索包含关键字的商品标题的所在商品.且是按创建时间倒查.

首先需要在managed-schema配置以下几个属性

记得这个配置文件默认的是"id".找到下面这个标签,替换成goodsid

goodsid

 

 然后在项目里面maven引入文件

org.apache.solrsolr-solrj7.5.0

接下来我直接粘贴一个工具类吧.里面都有注释.

package com.bai.solrs;import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
/** */
/*** 模拟商品数据的存取。* 商品有四个属性。分别是goodsid 主键id,goodstitle 商品标题,goodspics 商品图片,createTime 创建时间* @author dmw** 2018年11月6日*/
public class SolrUtil {/*** solr7+的客户端连接器*/private static HttpSolrClient client;/*** solr服务端核心的url*/private static String baseUrl = "http://localhost:8080/solr/new_core";/*** 是否数据批量刷入Solr.* 如果为false,代表着单个刷入,即每新增一个数据便立即刷入* 如果为true,代表着先把数据放入集合里,直到集合的长度为max_pool_size时,再统一批量刷入solr*/private static boolean collectCommite = false;/*** 集合的最大长度*/private static int max_pool_size = 10;/*** 数据集合*/private static List pool = new ArrayList();static{client = new HttpSolrClient.Builder(baseUrl).withConnectionTimeout(3000).withSocketTimeout(5000).build();}/*** 添加* * @param goodsid* @param goodstitle* @param goodspics* @throws SolrServerException* @throws IOException*/public static void add(String goodsid,String goodstitle,String goodspics) throws SolrServerException, IOException{/*** 创建一个元素,添加四个属性*/SolrInputDocument document = new SolrInputDocument();document.addField("goodsid", goodsid);document.addField("goodstitle", goodstitle);document.addField("goodspics", goodspics);document.addField("createTime", System.currentTimeMillis());if (collectCommite){/*** 放入池子里.如果池子长度等于或超出设定长度,批量刷入*/synchronized ("ok") {pool.add(document);if (pool.size() >= max_pool_size){client.add(pool);client.commit();pool.clear();}}}else {/*** 来一个刷一个*/client.add(document);client.commit();}}/*** 搜索* * @param title* @param page* @param rows* @return* @throws SolrServerException* @throws IOException*/public static SolrDocumentList get(String keyword,int page,int rows) throws SolrServerException, IOException{/*** 本例条件是:* 1.商品标题带有某个关键字的* 2.分页查询 page是页,rows是每页几个* 3.按创建时间倒查*/SolrQuery query = new SolrQuery("goodstitle:'"+keyword+"'");query.setStart((page-1)*rows);query.setRows(rows);query.setSort("createTime", SolrQuery.ORDER.desc);QueryResponse response = client.query(query);SolrDocumentList results = response.getResults();return results;}/*** 删除* @param goodsid* @throws SolrServerException* @throws IOException*/public static void delete(String goodsid) throws SolrServerException, IOException{client.deleteById(goodsid);client.commit();}public static void main(String[] args) throws SolrServerException, IOException {/*** 搜索的测试SolrDocumentList list = get("米老",1,10);System.out.println(JSONArray.fromObject(list).toString());*//** 添加的测试*//* add(UUID.randomUUID().toString(), "我喜欢米老鼠", "1.jpg");*//*add(UUID.randomUUID().toString(), "黑皮西瓜", "1.jpg");add(UUID.randomUUID().toString(), "南方大西瓜", "1.jpg");*/}
}

 


推荐阅读
  • 一:什么是solrSolr是apache下的一个开源项目,使用Java基于lucene开发的全文搜索服务器;Lucene是一个开放源代 ... [详细]
  • Lucene 全文检索技术入门
    一、搜索引擎的历史萌芽:Archie、Gopher起步:Robot(网络机器人)的出现与spider(网络爬虫)发展:excite、galax ... [详细]
  • javajigsaw2015年12月1日,星期二,在OpenJDK邮件列表中,MarkReinhold确认了许多人的期望:J ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • springboot启动不了_Spring Boot + MyBatis 多模块搭建教程
    作者:枫本非凡来源:www.cnblogs.comorzlinp9717399.html一、前言1、创建父工程最近公司项目准备开始重构,框 ... [详细]
  • camel_使用Camel在来自不同来源的Solr中索引数据
    camelApacheSolr是建立在Lucene之上的“流行的,快速的开源企业搜索平台”。为了进行搜索(并查找结果),通常需要从不同的源(例如内容管理 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • mysql+全文检索设计,基于sphinx+mysql全文检索架构设计.doc
    基于sphinxmysql全文检索架构设计.doc还剩2页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,喜欢就下载吧& ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了Nutch相关的知识,希望对你有一定的参考价值。 ... [详细]
  • solr倒排索引(转载)
    原文地址:http:blog.csdn.netchichengitarticledetails9235157http:blog.csdn.netnjpjsoftdevarticle ... [详细]
  • 说明:搜索模块针对的是买家用户,在找菜品找的很费劲下的一种查询方面。目前也是快速的检索商品。对于移动端的APP买家用户而言,要求的速度在3秒内完成。支持模糊查询,由于业务实战表面, ... [详细]
  • 搞懂 ELK 并不是一件特别难的事
    点击下方“民工哥技术之路”,选择“设为星标”回复“1024”获取独家整理的学习资料!本篇文章主要介绍ELK的一些框架组成,原理和实践&#x ... [详细]
  • 几百行代码完成百度搜索引擎,真的可以吗?
    几百,行,代码,完成,百度,搜索, ... [详细]
author-avatar
陌城花开2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有