热门标签 | 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");*/}
}

 


推荐阅读
  • 本文深入探讨了如何利用Maven高效管理项目中的外部依赖库。通过介绍Maven的官方依赖搜索地址(),详细讲解了依赖库的添加、版本管理和冲突解决等关键操作。此外,还提供了实用的配置示例和最佳实践,帮助开发者优化项目构建流程,提高开发效率。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • Hadoop平台警告解决:无法加载本机Hadoop库的全面应对方案
    本文探讨了在Hadoop平台上遇到“无法加载本机Hadoop库”警告的多种解决方案。首先,通过修改日志配置文件来忽略该警告,这一方法被证明是有效的。其次,尝试指定本地库的路径,但未能解决问题。接着,尝试不使用Hadoop本地库,同样没有效果。然后,通过替换现有的Hadoop本地库,成功解决了问题。最后,根据Hadoop的源代码自行编译本地库,也达到了预期的效果。以上方法适用于macOS系统。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
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社区 版权所有