在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.pswp.cn/news/371122.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371122.shtml
英文地址,請注明出處:http://en.pswp.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…