在Tomcat上设置和使用Apache Solr

前一阵子花了一点时间来玩Solr,但立即被我们可以在一些更大的数据集上获得的性能所震撼。
这是我的一些初始设置和配置学习信息,也许可以帮助某人启动它并更快地运行。
首先在Windows上进行设置。

下载并解压缩Apache Tomcat和Solr,然后将其复制到您的工作文件夹中。

Tomcat设置

如果要将tomcat作为服务使用以下方法进行安装:
bin \ service.bat安装
在conf。下编辑tomcat用户:

<role rolename="admin"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="admin,manager-gui"/>

如果要使用HTTP-GET使用国际字符(> 127)查询Solr,则必须通过接受百分比编码的UTF-8将Tomcat配置为符合URI标准。 添加:URIEncoding ='UTF-8'

<connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"
URIEncoding="UTF-8" />

到conf / server.xml

将example \ solr的内容复制到solr主目录D:\ Java \ apache-solr-3.6.0 \ home
在$ CATALINA_HOME / conf / Catalina / localhost / solr.xml上创建指向您的Solr主目录的代码片段。

<?xml version="1.0" encoding="UTF-8"?>
<context docBase="D:\Java\apache-tomcat-7.0.27\webapps\solr.war" debug="0" crossContext="true" ><environment name="solr/home" type="java.lang.String" value="D:\Java\apache-solr-3.6.0\home" override="true" />
</Context>

启动tomcat,登录,部署solr.war。

Solr设置

它应该在http:// localhost:8080 / solr / admin /上可用。要使用SolrJ创建快速测试,创建并读取数据:抓取以下Maven库:

<dependency><groupid>org.apache.solr</groupId><artifactid>apache-solr-solrj</artifactId><version>3.6.0</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>org.apache.httpcomponents</groupId><artifactid>httpclient</artifactId><version>4.1</version><scope>compile</scope></dependency><dependency><groupid>org.apache.httpcomponents</groupId><artifactid>httpcore</artifactId><version>4.1</version><scope>compile</scope></dependency><dependency><groupid>org.apache.james</groupId><artifactid>apache-mime4j</artifactId><version>0.6.1</version><scope>compile</scope></dependency><dependency><groupid>org.apache.httpcomponents</groupId><artifactid>httpmime</artifactId><version>4.1</version><scope>compile</scope></dependency><dependency><groupid>org.slf4j</groupId><artifactid>slf4j-api</artifactId><version>1.6.1</version><scope>compile</scope></dependency><dependency><groupid>commons-logging</groupId><artifactid>commons-logging</artifactId><version>1.1.1</version><scope>compile</scope></dependency><dependency><groupid>junit</groupId><artifactid>junit</artifactId><version>4.9</version><scope>test</scope></dependency>

JUnit测试:

package za.co.discovery.ecs.solr.test;import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Collection;import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
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 org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;@RunWith(JUnit4.class)
public class TestSolr {private SolrServer server;/*** setup.*/@Beforepublic void setup() {server = new HttpSolrServer("http://localhost:8080/solr/");try {server.deleteByQuery("*:*");} catch (SolrServerException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** Test Adding.** @throws MalformedURLException error*/@Testpublic void testAdding() throws MalformedURLException {try {final SolrInputDocument doc1 = new SolrInputDocument();doc1.addField("id", "id1", 1.0f);doc1.addField("name", "doc1", 1.0f);doc1.addField("price", 10);final SolrInputDocument doc2 = new SolrInputDocument();doc2.addField("id", "id2", 1.0f);doc2.addField("name", "doc2", 1.0f);doc2.addField("price", 20);final Collection<solrinputdocument> docs = new ArrayList<solrinputdocument>();docs.add(doc1);docs.add(doc2);server.add(docs);server.commit();final SolrQuery query = new SolrQuery();query.setQuery("*:*");query.addSortField("price", SolrQuery.ORDER.asc);final QueryResponse rsp = server.query(query);final SolrDocumentList solrDocumentList = rsp.getResults();for (final SolrDocument doc : solrDocumentList) {final String name = (String) doc.getFieldValue("name");final String id = (String) doc.getFieldValue("id"); //id is the uniqueKey fieldSystem.out.println("Name:" + name + " id:" + id);}} catch (SolrServerException e) {e.printStackTrace();Assert.fail(e.getMessage());} catch (IOException e) {e.printStackTrace();Assert.fail(e.getMessage());}}}

直接从数据库添加数据

首先,您需要将相关的数据库库添加到添加的类路径中。 然后按如下所示创建data-config.xml,如果需要自定义字段,则可以在dataconfig.xml下方显示的schema.xml中的fields标记下指定这些字段

<dataconfig><datasource name="jdbc" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1525:DB" user="user" password="pass"/><document name="products"><entity name="item" query="select * from demo"><field column="ID" name="id" /><field column="DEMO" name="demo" /><entity name="feature" query="select description from feature where item_id='${item.ID}'"><field name="features" column="description" /></entity><entity name="item_category" query="select CATEGORY_ID from item_category where item_id='${item.ID}'"><entity name="category" query="select description from category where id = '${item_category.CATEGORY_ID}'"><field column="description" name="cat" /></entity></entity></entity></document> 
</dataConfig>

schema.xml中的一个自定义字段:

<fields><field name="DEMO" type="string" indexed="true" stored="true" required="true" /> 
</fields

添加到solrconfig.xml中,确保指向data-config.xml,处理程序必须在solrconfig.xml中注册,如下所示

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"><lst name="defaults"><str name="config">data-config.xml</str></lst>
</requestHandler>

完成所有设置后,可以使用以下操作完成完全导入:
http:// localhost:8080 / solr / admin / dataimport?command = full-import

这样一来,您就可以快速进行闪电般的数据检索了。

参考: Zen上的 JCG合作伙伴 Brian Du Preez在IT博客上通过Tomcat在Apache上设置和使用Apache Solr 。


翻译自: https://www.javacodegeeks.com/2012/10/setting-up-and-playing-with-apache-solr.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sass变量

sass变量用法 1、sass变量必须以$符开头&#xff0c;后面紧跟着变量名 2、变量值和变量名之间就需要使用冒号(:)分隔开&#xff08;就像CSS属性设置一样&#xff09; 3、如果值后面加上!default则表示默认值 默认变量 sass的默认变量&#xff1a;仅需要在值后面加上!defaul…

西安4年java多少时间_西安学习java一般要多久

线程小n行的任务/任务执的数单个量为间隔执行池大所需时间时间&#xff0c;西安学习的配置&#xff0c;西安学习行定行池务的务执c配在执注置任方法时任上标&#xff0c;下解行调问题务的方度任有以异步决办采用法&#xff1a;上述式执。比如、般要多本名(套接套接5套t地地节点…

js 递归函数的使用及常用函数

1.递归函数的使用&#xff1a; 公园里有一堆桃子&#xff0c;猴子每天吃掉一半&#xff0c;挑出一个坏的扔掉&#xff0c;第6天的时候发现还剩1个桃子&#xff0c;问原来有多少个桃子 var peache;function peaches(n) { if (n 6) { peache 1; } else { …

redis分布式锁-SETNX实现

转自&#xff1a;https://my.oschina.net/u/1995545/blog/366381 Redis有一系列的命令&#xff0c;特点是以NX结尾&#xff0c;NX是Not eXists的缩写&#xff0c;如SETNX命令就应该理解为&#xff1a;SET if Not eXists。这系列的命令非常有用&#xff0c;这里讲使用SETNX来实现…

sql java驱动程序_Microsoft SQL Server JDBC 驱动程序支持矩阵

本页包含 Microsoft SQL Server JDBC 驱动程序的支持矩阵和支持生命周期策略。Microsoft JDBC 驱动程序支持生命周期矩阵和策略Microsoft 支持生命周期 (MSL) 策略提供了与 Microsoft 产品的支持生命周期有关的可预测透明信息。 自驱动程序发布之日起&#xff0c;JDBC 驱动程序…

使用直接内存时可以更快

总览 使用直接内存不能保证提高性能。 考虑到它增加了复杂性&#xff0c;除非有充分的理由使用它&#xff0c;否则应避免使用它。 塞尔吉奥奥利维拉&#xff08;Sergio Oliveira Jr&#xff09;的这篇出色文章表明&#xff0c;这不仅仅是使用直接内存来提高性能的问题&#x…

POJ 3977 折半枚举

链接&#xff1a; http://poj.org/problem?id3977 题意&#xff1a; 给你n个数&#xff0c;n最大35&#xff0c;让你从中选几个数&#xff0c;不能选0个&#xff0c;使它们和的绝对值最小 如果有一样的&#xff0c;取个数最小的 题解&#xff1a; np难题&#xff0c;但是因为…

java踩坑记

1.String 相等 稍微有点经验的程序员都会用equals比较而不是用 &#xff0c;但用equals就真的安全了吗&#xff0c;看下面的代码 user.getName().equals("xiaoming"); 有经验的老司机很快就能看到问题&#xff0c;如果user.getName()为null,就会抛出空指针异常&#…

java taken_java-是否有正确的方法在slf4j中传递参数?

第三变种是最好的。实际上&#xff0c;第一种情况是通过StringBuilder进行的字符串连接。第二和第三种情况相同。他们需要将整数值装箱到Integer(或其他Object)&#xff0c;然后创建一个数组来打包它们。在我的机器上进行的简单测试表明&#xff0c;如果不执行日志记录&#xf…

html常用小知识

请求重定向&#xff1a;加载页面之后&#xff0c;除了用js做重定向之外&#xff0c;我们还可以直接用<meta>标签做重定向。 1 <meta http-equiv"refresh" content"5;urlhttp://www.baidu.com" /> 5秒后跳转 超链接&#xff1a;在当前的iframe…

MyEclipse快捷键大全【转】

-------------------------------------MyEclipse 快捷键1(CTRL)-------------------------------------Ctrl1 快速修复CtrlD: 删除当前行 CtrlQ 定位到最后编辑的地方 CtrlL 定位在某行 CtrlO 快速显示 OutLine CtrlT 快速显示当前类的继承结构 CtrlW 关闭当前Editer Ct…

根据您的命令-命令设计模式

命令设计模式是一种广为人知的设计模式&#xff0c;它属于行为设计模式&#xff08;“四人帮”的一部分&#xff09;。 顾名思义&#xff0c;它与应用程序中的动作和事件有关。 问题陈述&#xff1a; 假设有一个网页将在其中包含多个菜单的情况。 编写此代码的一种方法是使条件…

用js和jQuery做轮播图

Javascript或jQuery做轮播图 css样式 <style> a{ text-decoration:none; } .naver{ width: 100%; position:relative; }.images{position:relative;width: 100%;height: 400px; } .images img{position:absolute;left: 0;top: 0;width: 100%;height: 400px;opacity: 0;fi…

w3school前端教程合集

有关前端开发的w3c教程合集。 http://caibaojian.com/w3school/ 地图ajax教程Canvas教程CSS教程CSS3教程CSS3选择器CSS参考手册DHTML教程HTML教程HTML5教程HTML5音频教程HTML DOM教程JavaScript教程jQuery教程jQuery Ajax教程jQuery事件jQuery操作jQuery选择器jQuery遍历json教…

【开发调试】谷歌浏览器中调试移动网页和测试网速下页面效果

、 今天有幸给大家分享一下谷歌浏览器针对移动网页测试的技巧&#xff0c;主要是最近做个微信公共号网站。所以就要对页面测试拉。移动网页我们最长测得就是各种手机大小的页面效果和出现网络问题的效果展示。 今天就简单分享下在谷歌浏览器测试页面的适配和网速限制展示。…

拼多多分享好友砍价Java实现_拼多多砍价怎么分享到朋友圈 砍价发到微信朋友圈方法...

拼多多是一款电商社交的共享式购物平台&#xff0c;现在还推出了砍价的活动&#xff0c;只要邀请好友砍价&#xff0c;你就以最低的价格购买商品&#xff0c;还可以可能是免费拿到&#xff0c;那么今天小编就给大家讲讲如何将自己的砍价信息分享到微信朋友圈。首先下载手机拼多…

通过6个简单的步骤在Windows上运行Apache Hive

注意 &#xff1a;您需要安装cygwin才能运行本教程&#xff0c;因为Hadoop&#xff08;Hive需要&#xff09;需要cygwin才能在Windows上运行。 至少&#xff0c;系统中必须存在Basic&#xff0c;Net&#xff08;OpenSSH&#xff0c;tcp_wrapper软件包&#xff09;和与安全相关的…

vim编辑器初级(八)

:abbreviate  后面接一个缩写&#xff0c;再接这个缩写的全写&#xff0c;这样在输入这个缩写后&#xff0c;vim会自动将其展开为它的全写 :abbreviate  列出目前你所设置的所有缩写 :map  后面接一个字符串&#xff0c;再接这个字符串所映射的一串命令&#xff0c;这样在…

java多文件post请求_如何使用Java发出多部分/表单数据POST请求?

我们使用HttpClient 4.x创建多部分文件post。更新&#xff1a;截至HttpClient 4.3&#xff0c;一些类已被弃用。下面是新API的代码&#xff1a;CloseableHttpClient httpClient HttpClients.createDefault();HttpPost uploadFile new HttpPost("...");MultipartEnt…

vue 环境的搭建及初始化项目

其实超级简单&#xff0c;虽然网上很多&#xff0c;但是我顺便记录下相当于做笔记吧 1nodejs 的安装&#xff0c; 在node官网下载&#xff0c;点击安装&#xff0c;安装的时候最好选择路径在d盘 2设置环境变量 我的电脑-->属性-->系统环境变量- 系统变量新增一个NODE…