在Eclipse中运行Solr 基础知识
发布时间:2021-07-06 22:51:04
Solr我还是个菜鸟,写这一些文章只是记录一下最近一段时间学习Solr的心得。
Solr是什么?
最近我学Solr的时候,一直看到一句话,Solr 是一个可供企业使用的、基于 Lucene 的开箱即用的搜索服务器。当时想了很久没看懂这句话是什么意思,什么是搜索服务器?当接触的深了才发现,所谓的搜索服务器,就是能够在服务器(Tomcat,Jetty)中运行的搜索程序的一个工程。
Solr能做什么?
了解过Lucene的人都知道,Lucene在做两件事情,索引管理与搜索,Solr同样也不例外,做的也是这两件事情,只不过使之更加简单化。
如果对Lucene还不太了解,推荐看一下觉先的博客:http://www.cnblogs.com/forfuture1978/category/300665.html,这篇博客对于我刚刚接触全文检索的时候帮助很大,另外推荐一本书,英文版Lucene In Action,中文版Lucene实战。
下面,切入正题,既然Solr是一个搜索服务器,我们当然需要它能够在我们的Eclipse里进行管理,我就写一下我的一些心得吧。
在Eclipse中运行Solr
1.下载solr完整包,我用的是Solr 3.6.1;
2.在Eclipse中新建一个Dynamic Web project项目,我的命名是solr,大家也可以这样,如果不一样,在你访问的时候注意一下就好了。
3.删除新建项目中的WebContent下的所有内容,将下载的Solr完整包中的dist目录下的apache-solr-3.6.1.war解压,将里面的所有内容复制到WebContent下,复制完成之后会有红叉,别管了,就当没看见。
4.指定solrHome,solrHome是存放solr核心配置文件与索引的地方。
打开WEB-INF/web.xml文件,添加以下节点:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>E:/solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
其中env-entry-name必须是solr/home,env-entry-value节点是你要放置solr配置文件的地方。
5.添加solr配置文件
这里有两种方法,自己建立或者是拷贝下载完整包中的核心配置文件。
第一种方法:拷贝,进入下载包中的example/mutiCore目录下,可以看到有core1,core2,将此文件夹以及下面的solr.xml文件拷贝至solrHome。
第二种方法:(1).新建,进入solrHome,新建solr.xml文件,配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
<cores adminPath="/admin/cores">
<core name="merchant" instanceDir="merchant" />
</cores>
</solr>
其中adminPath的文件如代码所示,最好不要更改,core中name随意,最好是有一定的实际意义的,instanceDir,这里指定了该core的目录,这里配置了merchant,也就意味着是solrHome下的merchant目录。
在这里解释一下多核心配置,此处示例我只存放了一个core,因为我们的产品只需要对着一个merchant进行全文检索。如果有需要,比如说还需对coupon等文件检索的话,就需要配置多核。example/muticore文件夹下给出了多核的示例,大家可以参考一下。
(2).新建merchant目录(与配置中的instanceDir一致),然后在merchant下新建conf目录,在conf里新建两个xml文件,分别是schema.xml,solrconfig.xml,这两个xml的配置会在下篇博客中详细讲述,如果不知道如何配置,拷贝example/muticore/core1/conf里面的两个文件进来即可。
6.在Eclipse中启动solr
在servers窗口中new一个server,然后将刚刚新建的项目add进去;
修改端口,双击刚刚新建的服务器,在port里面修改HTTP/1.1的端口为8983,这里可以自定义,最好不要和你的其他项目重复。然后保存;
启动服务器。
7.在浏览器中打开solr管理面板
打开以下地址,http://localhost:8983/solr/,然后你就可以看到Admin merchant选项了,点击进入,就是刚刚配置的merchant core的管理面板。
猜你喜欢
- /** * 进行BigDecimal对象的加减乘除,四舍五入等运算的工具类 * * @author Marydon * @createTi
- 本文实例讲述了Java实现文件和base64流的相互转换功能。分享给大家供大家参考,具体如下:import java.io.FileInpu
- 实时代码模板(Live Templates)我们先来看一个gif图:大兄弟,你看清我的操作了么?这个就是实时代码模板的功能。我们来看一下怎么
- Android 无障碍的全局悬浮窗可以在屏幕上添加 UI 供用户进行快捷操作,可以展示在所有应用程序之上长期展示。另一方面,在一些自动化场景
- 在阻塞队里中,除了对元素进行增加和删除外,我们可以把元素的删除做一个延迟的处理,即使用DelayQueue的方法。本文就来和大家聊聊Java
- 最近要做一个java web项目,因为页面不是很多,所以就没有前后端分离,前后端写在一起,这时候就用到thymeleaf了,以下是不动脑式的
- 1、LongAdder由来LongAdder类是JDK1.8新增的一个原子性操作类。AtomicLong通过CAS算法提供了非阻塞的原子性操
- 前言在java Thread类中,我们会看到interrupt()、interrupted()及isInterrupted(),在大多数情况
- 定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。类型:行为类
- 环境:VS2019+Qt5.121. CLR库安装 &nb
- 该篇文章内容较多,包括有rabbitMq相关的一些简单理论介绍,provider消息推送实例,consumer消息消费实例,Direct、T
- 在实际应用中,大家使用的密码可以说多种多样,但是无论有多少,其组成不遑是有可打印字符组成的,我们可以认为class CreateDic{ p
- 1、什么是值传递,什么是引用传递?值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数
- 1 redis主从复制的概念多机环境下,一个redis服务接收写命令,当自身数据与状态发生变化,将其复制到一个或多个redis。这种模式称为
- 一、定义实体类Person,封装生成的数据package net.dc.test;public class Person { private
- substring(参数)是java截取字符串的一个方法。它有两种传参的方式:第一种:public String substring(int
- 一、什么是iText?在企业的信息系统中,报表处理一直占比较重要的作用,iText是一种生成PDF报表的Java组件。通过在服务器端使用Js
- 默认情况下,如果应用以 Android Q 为目标平台,则在访问外部存储设备中的文件时会进入过滤视图。应用可以使用 Context.getE
- Mybatis-Plus是一个优秀的Mybatis增强工具,目前更新到3.1.1。Mybatis-Plus原生提供了很多单表操作的方法,极大
- 在重写类UsernamePasswordAuthenticationFilter时抛出了这个异常,字面上理解是authenticationM