solr 6.1 服务端 tomcat 搭建及调用

一、下载

apache solr6.1.0 最新版本zip,解压缩生成一个solr6.1.0文件夹

二、安装

1、在d:/projects下新建一个solr

2、把solr6.1.0/server/solr复制到d:/projects/solr/下,并把文件夹改为home,即d:/projects/solr/home.

3、复制一个tomcat文件夹在d:/projects/下,并改名为:d:/projects/server

4、把solr-6.1.0\server\solr-webapp\webapp复制到D:\projects\solr\server\webapps下,并改名为

solr,即为: D:\projects\solr\server\webapps\solr

5、修改tomcat配置文件,D:\projects\solr\server\conf\server.xml:

在<Host name="localhost"  appBase="webapps"

unpackWARs="true" autoDeploy="true">下添加:

<Context path="" docBase="solr" reloadable="false" crossContext="true">

<Environment name="solr/home" type="java.lang.String" value="D:\projects\solr\home" override="true"/>

</Context>

这里的docBase=”solr”,对应D:\projects\solr\server\webapps\solr 这里的文件夹中的solr;

value=””上面第2条中的地址。

6、把solr-6.1.0.0\server\lib\ext中的所有jar包得制到tomcat\lib下(即D:\projects\solr\server\lib\)。

7、启动tomcat--------------------------

8、浏览器中输入地址:http://localhost:8080/index.html

三、配置

core配置

1、  把D:\projects\solr\home\configsets\basic_configs文件夹复制到D:\projects\solr\home\下,并改名为core1,即D:\projects\solr\home\core1

2、  在浏览器中,选择core admin,点击add core,输入一下下内容,instanceDir一定要写为上面一步中修改后的文件夹名。

solrconfig.xml 和  managed-schema 两个文件在 D:\projects\solr\home\core1\conf 中

solr管理界面登录权限配置(

注:

权限配置 最好先别配置 等 测试代码连接到 solr 并成功返回后 再尝试配置

)

1、修改tomcat的tomcat-user.xml ,</tomcat-user>上面添加:

<role rolename="solr"/>

<user username="admin" password="admin" roles="solr"/>

3、  修改solr项目中的D:\projects\solr\server\webapps\solr\WEB-INF \web.xml, 在</web-app>上面添加:

<security-constraint>

<web-resource-collection>

<web-resource-name>Solr Lockdown</web-resource-name>

<url-pattern>/</url-pattern>

</web-resource-collection>

<auth-constraint>

<role-name>solr</role-name>

<role-name>admin</role-name>

</auth-constraint>

</security-constraint>

<login-config>

<auth-method>BASIC</auth-method>

<realm-name>Solr</realm-name>

</login-config>

3、重新启动tomcat,再使用管理界面就必须要输入用户名/密码(admin/admin)了。

客户端访问权限控制

在D:\projects\solr\server\webapps下创建:communityserver_override.config,内容如下:

<?xml version="1.0" encoding="utf-8"?>

<Overrides>

<Override xpath="/CommunityServer/Search/Solr" mode="change" name="host" value="http://localhost:8080" />

</Overrides>

value的值为浏览器中访问地址?待确认.

四、中文分词器

mmseg4j中文分词器

1、  从网上maven库下载最新版本: mmseg4j-core-1.10.0.jar; mmseg4j-solr-2.3.0.jar(中有这二个jar, mmseg4j-analysis-1.9.1.jar不能放,否则会报java.lang.NoSuchMethodError: com.chenlb.mmseg4j.analysis.MMSegTokenizer.<init>(Lcom/chenlb/mmseg4j/Seg;)V错误,因为mmseg4j-solr-2.3.0已经包含了mmseg4j-analysis)。放在D:\projects\solr\server\webapps\solr\WEB-INF\lib\下。

2、  从https://github.com/chenlb/mmseg4j-solr上,把mmseg4j for lucene or solr复制到:D:\projects\solr\home\core1\conf\managed-schema的其它<fieldtype></fieldtype>块后面平级。

<field name="content" type="textComplex" indexed="true" stored="true" multiValued="true" />

 <fieldtype name="textComplex" class="solr.TextField" positionIncrementGap="100">

<analyzer>

<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath=" ./../dic"/>

</analyzer>

</fieldtype>

<fieldtype name="textMaxWord" class="solr.TextField" positionIncrementGap="100">

<analyzer>

<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" />

</analyzer>

</fieldtype>

<fieldtype name="textSimple" class="solr.TextField" positionIncrementGap="100">

<analyzer>

<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="./ ../dic" />

</analyzer>

</fieldtype>

这里的dicPath,是相对路径,./../dic表示与core1平级目录dic下,以后所有自定义的分词逻辑都可以放在这个目录下,这个目录需要自己创建。

textComplex复杂分词器,textMaxWord最大分词器,textSimple简单分词器.

点击core1的analysis,输入中文,选择content或者textComplex,点击analyse values,效果为:

选择textMaxWorld,结果为:

五、使用solrj操作solr

1、URL不可以带admin.html

2、SolrInputDocument中的字段,必须在core1/conf/managed-schema中有对应的field

3、必须先创建索引,查询才有数据

4、如果有走http协议(使用httpclient操作)有管理密码(web.xml中的配置),会报: This request requires HTTP authentication.

package com.test;

 5、如果  出现   以下相关异常报错

    servlet [default] in context with path [/solr] threw exception
 org.apache.solr.common.SolrException: Error processing the request. CoreContainer is either not initialized or shutting down.
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:217)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:208)

  解决方案:

  可以在D:\projects\solr\server\webapps\solr目录中创建 lib目录然后将solr解压开的文件夹dist中jar包和contrib\velocity\lib
下的jar拷贝到该新创建的lib目录就可以了。(注:是把 dist目录和 contrib\velocity\lib 下的所有jar 包括子目录里的 jar 全部复制到  D:\projects\solr\server\webapps\solr\lib 中  lib中所有jar都是平级的 lib 下没有子目录)

以下java 代码进行连接  查询测试

需要引用  两个jar 文件 在项目的 pom   文件中 添加 如下代码:

<dependency>
        <groupId>org.apache.solr</groupId><artifactId>solr-solrj</artifactId><version>6.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.solr</groupId><artifactId>solr-core</artifactId><version>6.1.0</version>
    </dependency>

注: 如果配置了 访问权限  下面在连接的时候 会报错

  如果想要在有用户名密码的环境下连接使用  则以下代码在 连接的时候  需要添加  http的用户名密码 验证(具体添加方法 自行网络搜索 )

  另:安全配置除了 添加用户名密码 外 还需要 绑定  允许访问的ip地址 为localhost 127.0.0.1 或者服务器 真实Ip地址  防止 被恶意攻击

  绑定方法 自行 网络搜索

import org.apache.solr.client.solrj.*;

import org.apache.solr.client.solrj.impl.HttpSolrClient;

import org.apache.solr.client.solrj.response.QueryResponse;

import org.apache.solr.common.SolrDocument;

import org.apache.solr.common.SolrDocumentList;

import org.apache.solr.common.SolrInputDocument;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

public class MySolr {

//solr url

public static final String URL = "http://localhost:8080/solr";

//solr应用

public static final String SERVER = "core1";//http://localhost:8080/admin.html#/core1

//待索引、查询字段                                                                                             http://localhost:8080/solr53/#/connection1

public static String[] docs = {"Solr是一个独立的企业级搜索应用服务器",

"它对外提供类似于Web-service的API接口",

"用户可以通过http请求",

"向搜索引擎服务器提交一定格式的XML文件生成索引",

"也可以通过Http Get操作提出查找请求",

"并得到XML格式的返回结果"};

public static SolrClient getSolrClient(){

System.out.println(URL+"/"+SERVER);

return new HttpSolrClient(URL+"/"+SERVER);

}

/**

* 新建索引

*/

public static void createIndex(){

SolrClient client = getSolrClient();

int i = 0;

List<SolrInputDocument> docList = new ArrayList<SolrInputDocument>();

for(String str : docs){

SolrInputDocument doc = new SolrInputDocument();

doc.addField("id",i++);

doc.addField("content", str);//需要在core1/conf/managed-schema中有对应的field

docList.add(doc);

}

try {

client.add(docList);

client.commit();

} catch (SolrServerException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

};

/**

* 搜索

*/

public static void search(){

SolrClient client = getSolrClient();

SolrQuery query = new SolrQuery();

query.setQuery("content:搜索");

QueryResponse response = null;

try {

response = client.query(query);

System.out.println(response.toString());

System.out.println();

SolrDocumentList docs = response.getResults();

System.out.println("文档个数:" + docs.getNumFound());

System.out.println("查询时间:" + response.getQTime());

for (SolrDocument doc : docs) {

System.out.println("id: " + doc.getFieldValue("id") + "      content: " + doc.getFieldValue("content"));

}

} catch (SolrServerException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

//        createIndex();

search();

}

}

时间: 2024-11-25 07:22:53

solr 6.1 服务端 tomcat 搭建及调用的相关文章

spring-oauth-server实践:客户端和服务端环境搭建

客户端:http://localhost:8080/spring-oauth-client/index.jsp 服务端:http://localhost:8080/spring-oauth-server/index.jsp access_token=942090fc-1aa0-4444-8127-57214680df3b 验证业务:http://localhost:8080/spring-oauth-server/m/dashboard?access_token=942090fc-1aa0-44

PHP服务端环境搭建

一.PHP服务端环境搭建 1.php 服务端环境  安装套件 xampp(apach+mysql+php解释器) F:\MyDoc文件(重要)\DL_学习\download重要资源\apache服务器组件 安装 此时进入xmapp面板显示成功运行 测试本地Apache服务器是否开启:浏览器中输入127.0.0.1 回车即可进入xmapp官网 4.修改浏览器中默认出现的dashboard文件夹 打开xmapp下htdocs文件夹下 index.php文件  配置文件中默认跳转到本文件夹 解决办法:

jax-ws服务端生成和客户端调用实例

最近公司让基于别的公司的接口写一个自己的接口,接口对于别的公司来说相当于客户端,但对于自己本公司要调用的程序来说,又相当于服务端. 闲来无事,总结下. 先从java自带的service开始 JAX-WS(java api xml webservice)  基于javaAPI的webService实现 用的工具是myeclipse 首先是服务端 1.新建webProject  jax-wsServer  如图: 2.新建包和类如下图 既然是入门例子,咱就越简单越好,关键看好流程 IMService

jax-ws服务端生成和客户端调用实例详解

长时间不写博客,照片都忘记怎么上传了,由于上一篇图片没有上传,所以删掉,重做了一个. 最近公司让基于别的公司的接口写一个自己的接口,接口对于别的公司来说相当于客户端,但对于自己本公司要调用的程序来说,又相当于服务端. 闲来无事,总结下. 先从java自带的service开始 JAX-WS(java api xml webservice)  基于javaAPI的webService实现 用的工具是myeclipse 首先是服务端 新建webProject  jax-wsServer  如图: 新建

Spring Cloud 服务端注册与客户端调用

Spring Cloud 服务端注册与客户端调用 上一篇中,我们已经把Spring Cloud的服务注册中心Eureka搭建起来了,这一章,我们讲解如何将服务注册到Eureka,以及客户端如何调用服务. 一.注册服务 首先要再项目中引入Eureka Client,在pom.xml中加入如下配置: <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cl

zabbix服务端监控搭建(一)

第1章 环境搭建 [[email protected] zabbix]# uname -mx86_64[[email protected] zabbix]# uname -r2.6.32-642.el6.x86_64[[email protected] zabbix]# cat /etc/redhat-release CentOS release 6.8 (Final) 先安装zabbix相关服务,再安装数据库.zabbix相关服务安装完成后,默认会把apache自动安装上去.这就是传说中的la

Android中直播视频技术探究之---视频直播服务端环境搭建(Nginx+RTMP)

一.前言 前面介绍了Android中视频直播中的一个重要类ByteBuffer,不了解的同学可以 点击查看 到这里开始,我们开始动手开发了,因为我们后续肯定是需要直播视频功能,然后把视频推流到服务端,本地在进行拉流播放的流程.所以这个过程中,我们需要首先来把服务端这个中间环节的工作搞定,后续再弄推流和拉流功能.现在推流大部分都是使用RTMP/HLS协议的,关于这两个协议的区别: 所以我们服务端搭建就需要用这两个协议,不过本文放心了,不会去手动的编写一套协议代码的,谁叫这个世界属于开源呢? 需要的

android客户端访问服务端tomcat

首先,服务器端已经存在一个项目,该项目基于SSH,已经部署在tomcat上并且正在运行了.我在这个项目的action层新建了一个包,该包主要是Struts2的一些action,只是这些action不是返回某些view,而是返回json,定义这些action的XML配置如下: <package name="mobie" namespace="/mobie" extends="json-default">         <acti

Node服务端极速搭建 -- nvmhome

> 本文意在让你掌握极速搭建Node服务端(任何Project) ```$ whoaminame: kelvinemail: [email protected]homepage: www.kelvv.comgithub: https://github.com/kelvv```****本文利用Docker搭建一个预安装好:* pm2 -- Node应用的进程管理器* git -- 代码管理* ssh -- 远程登录* nvm -- node版本管理* npm -- node包安装* node --