欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

solr集群java代碼 solr schema

java web 怎么用solr

我們下載的Solr包后,進(jìn)入Solr所在的目錄,我們可以看到以下幾個(gè)目錄:build、client、dist、example、lib、site、src。下面分別對其進(jìn)行介紹。

沈陽網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),沈陽網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為沈陽近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個(gè)售后服務(wù)好的沈陽做網(wǎng)站的公司定做!

1) build:該目錄是在ant build過程中生成的,其中包含了未被打包成jar或是war的class文件以及一些文檔文件。

2) client:該目錄包含了特定語言的Solr客戶端API,使得使用其他語言的用戶能通過HTTP用XML與Solr進(jìn)行通話。現(xiàn)在該目錄里面雖然包含javascript、python、ruby三個(gè)子目錄,但是到目前為止只包含一部分的ruby的代碼,其他語言仍是空的。另外,Solr的Java客戶端稱為SolrJ,其代碼位于src/solrj目錄下面。在之后的文章中我會詳細(xì)介紹Solr客戶端的使用。

3) dist:該目錄包含build過程中產(chǎn)生的war和jar文件,以及相關(guān)的依賴文件。還記得上一篇文章中,我們在build 1.4版本的Solr源代碼后需要部署example嗎?其實(shí)就是將該目錄下面的apache-solr-1.4.war部署到Jetty上面去,并重命名為solr.war。

4) example:這個(gè)目錄實(shí)際上是Jetty的安裝目錄。其中包含了一些樣例數(shù)據(jù)和一些Solr的配置。

其中一些子目錄也比較重要,這里也對它們稍作介紹。

l example/etc:該目錄包含了Jetty的配置,在這里我們可以將Jetty的默認(rèn)端口從8983改為80端口。

l 將其中的8983端口換成80端口。注意更改端口后啟動Jetty可能會提示你沒有權(quán)限,你需要使用sudo java -jar start.jar來運(yùn)行。

l example/multicore:該目錄包含了在Solr的multicore中設(shè)置的多個(gè)home目錄。在之后的文章中我會對其進(jìn)行介紹。

l example/solr:該目錄是一個(gè)包含了默認(rèn)配置信息的Solr的home目錄。

詳見下面的“solr home說明”

l example/webapps:Jetty的webapps目錄,該目錄通常用來放置Java的Web應(yīng)用程序。在Solr中,前面提到的solr.war文件就部署在這里。

5) lib:該目錄包含了所有Solr的API所依賴的庫文件。其中包括Lucene,Apache commons utilities和用來處理XML的Stax庫。

6) site:該目錄僅僅包含了Solr的官網(wǎng)的網(wǎng)頁內(nèi)容,以及一些教程的PDF文檔。

7) src:該目錄包含了Solr項(xiàng)目的整個(gè)源代碼。這里對其各個(gè)子目錄也做相應(yīng)的介紹。

l src/java:該目錄存放的是Solr使用Java編寫的源代碼。

l src/scripts:該目錄存放的是配置Solr服務(wù)器的Unix BashShell腳本,在后面介紹多服務(wù)器配置中將會有重要的作用。

l src/solrj:前面提到過該目錄存放的是Solr的Java版本的客戶端代碼。

l src/test:該目錄存放的是測試程序的源代碼和測試文件。

l src/webapp:該目錄存放的是管理Solr的Web頁面,包括Servlet和JSP文件,其構(gòu)成了前面提到的WAR文件。管理Solr的JSP頁面在web/admin目錄下面,如果你有興趣折騰Solr可以找到相應(yīng)的JSP的頁面對其進(jìn)行設(shè)置

1.4.2 Solr home說明

所謂的Solr home目錄實(shí)際上是一個(gè)運(yùn)行的Solr實(shí)例所對應(yīng)的配置和數(shù)據(jù)(Lucene索引)。在上一篇文章中我提到過在Solr的example/solr目錄就是一個(gè)Solr用做示例的默認(rèn)配置home目錄。實(shí)際上example/multicore也是一個(gè)合法的Solr home目錄,只不過是用來做mult-core設(shè)置的。那么我們來看看example/solr這個(gè)目錄里面都有些什么。

example/solr目錄下主要有以下一些目錄和文件:

1) bin:如果你需要對Solr進(jìn)行更高級的配置,該目錄建議用來存放Solr的復(fù)制腳本。

2) conf :該目錄下面包含了各種配置文件,下面列出了兩個(gè)最為重要的配置文件。其余的.txt和.xml文件被這兩個(gè)文件所引用,如用來對文本進(jìn)行特殊的處理。

l conf/schema.xml:該文件是索引的schema,包含了域類型的定義以及相關(guān)聯(lián)的analyzer鏈。

l conf/solrconfig.xml:該文件是Solr的主配置文件。

l conf/xslt:該目錄包含了各種XSLT文件,能將Solr的查詢響應(yīng)轉(zhuǎn)換成不同的格式,如:Atom/RSS等。

3) data:包含了Lucene的二進(jìn)制索引文件。

4) lib:該目錄是可選的。用來放置附加的Java JAR文件,Solr在啟動時(shí)會自動加載該目錄下的JAR文件。這就使得用戶可以對Solr的發(fā)布版本(solr.war)進(jìn)行擴(kuò)展。如果你的擴(kuò)展并不對Solr本身進(jìn)行修改,那么就可以將你的修改部署到JAR文件中放到這里。

Solr是如何找到運(yùn)行所需要的home目錄的呢?

Solr首先檢查名為solr.solr.home的Java系統(tǒng)屬性,有幾種不同的方式來設(shè)置該Java系統(tǒng)屬性。一種不管你使用什么樣的Java應(yīng)用服務(wù)器或Servlet引擎都通用的方法是在調(diào)用Java的命令行中進(jìn)行設(shè)置。所以,你可以在啟動Jetty的時(shí)候顯式地指定Solr的home目錄java -Dsolr.solr.home=solr/ -jar start.jar。另一種通用的方法是使用JNDI,將home目錄綁定到j(luò)ava:comp/env/solr/home。并向src/webapp/web/WEB-INF/web.xml添加以下一段代碼:

1 env-entry

2 env-entry-namesolr/home/env-entry-name

3 env-entry-valuesolr//env-entry-value

4 env-entry-typejava.lang.String/env-entry-type

5 /env-entry

實(shí)際上這段XML在web.xml文件中已經(jīng)存在,你只需要把原來注釋掉的xml取消注釋,添加你所要指向的home目錄即可。因?yàn)樾薷牧藈eb.xml文件,所以你需要運(yùn)行antdist-war來重新打包之后再部署WAR文件。

最后,如果Solr的home目錄既沒有通過Java系統(tǒng)屬性指定也沒有通過JNDI指定,那么他將默認(rèn)指向solr/。

在產(chǎn)品環(huán)境中,我們必須設(shè)置Solr的home目錄而不是讓其默認(rèn)指向solr/。而且應(yīng)該使用絕對路徑,而不是相對路徑,因?yàn)槟阌锌赡軓牟煌哪夸浵旅鎲討?yīng)用服務(wù)器。

注:Jetty 是一個(gè)開源的servlet容器,它為基于Java的web內(nèi)容,例如JSP和servlet提供運(yùn)行環(huán)境。Jetty是使用Java語言編寫的,它的API以一組JAR包的形式發(fā)布。開發(fā)人員可以將Jetty容器實(shí)例化成一個(gè)對象,可以迅速為一些獨(dú)立運(yùn)行(stand-alone)的Java應(yīng)用提供網(wǎng)絡(luò)和web連接。

我們先從使用者的角度出發(fā),最先看到的當(dāng)然是servlet,因?yàn)镾olr本身是個(gè)獨(dú)立的網(wǎng)絡(luò)應(yīng)用程序,需要在Servlet容器中運(yùn)行來提供服務(wù),所以servlet是用戶接觸的最外層。我們看看org.apache.solr.servlet包。這個(gè)包很簡單,只有兩個(gè)類:SolrServlet和SolrUpdateServlet.我們很容易從類名中猜出這兩個(gè)類的用途。

SolrServlet類繼承HttpServlet類,只有四個(gè)方法:

· init()

· destroy()

· doGet()

· doPost()

SolrServlet類中除了普通的Java類對象(包括Servlet相關(guān)的)外,有四個(gè)Solr本身的類,還有一個(gè)Solr本身的異常。其中兩個(gè)類和一個(gè)異常屬于org.apache.solr.core包,兩個(gè)類屬于org.apache.solr.request包。屬于core包的有:

· Config:

· SolrCore:

屬于request包的有:

· SolrQueryResponse:

· QueryResponseWriter:

分析一下這個(gè)SolrServlet類。首先servlet會調(diào)用init()方法進(jìn)行初始化:通過Context查找java:comp/env/solr/home來確定Solr的主目錄(home),接著調(diào)用Config.setInstanceDir(home)方法設(shè)置這個(gè)實(shí)例的目錄。然后通過SolrCore.getSolrCore()來獲得一個(gè)SolrCore實(shí)例。destroy()方法將會在Servlet對象銷毀時(shí)調(diào)用,僅僅調(diào)用core.close()關(guān)閉SolrCore實(shí)例。

當(dāng)用戶請求進(jìn)來時(shí)doPost()簡單地將任務(wù)交給doGet()完成,主要的任務(wù)由doGet()完成。分析一下doGet()方法:

1) 使用SolrCore和doGet()參數(shù)request生成一個(gè)SolrServletRequest對象(注意:這個(gè)SolrServletRequest類不是公開類,位于org.apache.solr.servlet包中,繼承了SolrQueryRequestBase類,僅僅接受SolrCore和HttpServletRequest對象作為參數(shù))

2) 然后SolrCore執(zhí)行execute()方法(參數(shù)為SolrServletRequest和SolrQueryResponse)

由此可見,真正的處理核心是SolrCore的execute方法

Java框架solr用哪個(gè)版本的好?

solr-4.10.2,當(dāng)下幾個(gè)出名的分詞器IKAnalyzer已支持該版本。現(xiàn)在開發(fā)的產(chǎn)品需要使用搜索功能,lucene是首選,于是再度研究了一翻,沒有多大難度。同時(shí)也不在直接使用lucene庫,而是使用solr,大大簡化了創(chuàng)建索引與查詢索引的難度。solr這種分布式索引方式對性能的控制更加有把握,因?yàn)樗С侄嗪恕?fù)制功能,我們還可以寫代碼實(shí)現(xiàn)讀寫分離等性能擴(kuò)展功能。itJob

solr是怎么調(diào)用zookeeper

zookeeper配置

(1)解壓為zookeepertar -xf -C /home/myuser/zookeeper/

復(fù)制zookeeper文件夾3份,分別重名名為zookeeperA,zookeeperB,zookeeperC。并且創(chuàng)建數(shù)據(jù)快照以及日志存放文件夾,命名為zooA,zooB,zooC。(2)編輯對應(yīng)的zookeeper配置文件,復(fù)制zookeeperconf下zoo_sample.cfg為zoo.cfgcd /home/myuser/zookeeperA/conf

cp zoo_sample.cfg zoo.cfg

(3)修改zoo.cfg# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/home/myuser/zooA/data

# the port at which the clients will connect

clientPort=2181

# ZooKeeper server and its port no. # ZooKeeper ensemble should know about every other machine in the ensemble # specify server id by creating 'myid' file in the dataDir # use hostname instead of IP address for convenient maintenance

server.1=127.0.0.1:2888:3888

server.2=127.0.0.1:2988:3988

server.3=127.0.0.1:2088:3088

#

# Be sure to read the maintenance section of the

# administrator guide before turningtickTime:心跳時(shí)間,為了確保連接存在的,以毫秒為單位,最小超時(shí)時(shí)間為兩個(gè)心跳時(shí)間initLimit:多少個(gè)心跳時(shí)間內(nèi),允許其他server連接并初始化數(shù)據(jù),如果ZooKeeper管理的數(shù)據(jù)較大,則應(yīng)相應(yīng)增大這個(gè)值clientPort:服務(wù)的監(jiān)聽端口dataDir:用于存放內(nèi)存數(shù)據(jù)庫快照的文件夾,同時(shí)用于集群的myid文件也存在這個(gè)文件夾里(注意:一個(gè)配置文件只能包含一個(gè)dataDir字樣,即使它被注釋掉了。)dataLogDir:用于單獨(dú)設(shè)置transaction log的目錄,transaction log分離可以避免和普通log還有快照的競爭

syncLimit:多少個(gè)tickTime內(nèi),允許follower同步,如果follower落后太多,則會被丟棄。

(4)創(chuàng)建myid文件cd /home/myuser/zooA/data

sudo sh -c 'echo "1" myid'

其他文件夾類似創(chuàng)建myid文件,zookeeperB為2,zookeeperC為3(5)啟動zookeepercd /home/myuser/zookeeperA/bin

sudo sh zkServer.sh start

查看zookeeper狀態(tài)[root@weibo bin]# sh zkServer.sh status

JMX enabled by default

Using config: /home/weibo/zookeeperA/bin/../conf/zoo.cfg

Mode: follower

啟動OK,依次啟動另外兩臺zookeeper,啟動第一臺zookeeper后,你可以觀察bin下的zookeeper.out可以看到報(bào)錯(cuò),connection refused,沒有關(guān)系,zookeeper需要等待其他另個(gè)節(jié)點(diǎn)的加入,全部啟動之后就正常了。(6)客戶端連接zookeeper[root@weibo bin]# sh zkCli.sh

Connecting to localhost:2181

2013-05-10 15:00:25,363 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.5-1392090, builtconfigs:保存上傳的配置文件信息clusterstate.json:集群狀態(tài)jsonaliases:別名jsonlive_node:當(dāng)solr服務(wù)器啟動的時(shí)候,會注冊到這里overseer:保存shard信息overseer_elect:節(jié)點(diǎn)選舉collections:所有的collection

Solr及Tomcat安裝配置

(1)下載solr4.2,把solr-4.2.1\example\solr\collection1\conf 目錄下的配置文件上傳的zookeeper(2)上傳solr配置文件到zookeeperJava -classpath .:/home/weibo/tomcat_solr_/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381 -confdir /home/weibo/solr-config -confname weiboconfig

(3)把配置文件和目標(biāo)collection聯(lián)系起來java -classpath .:/home/weibo/tomcat_solr_/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection weibocollection -confname weiboconfig -zkhost 127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381

(4)復(fù)制3個(gè)tomcat,在conf/Catalina/localhost創(chuàng)建solr.xml(如果目錄不存在,請自行創(chuàng)建),內(nèi)容如下?xml version="1.0" encoding="utf-8"?

Context docBase="/home/weibo/solr-/solr.war" debug="0" corssContext="false"

Environment name="solr/home" type="java.lang.String" value="/home/weibo/solr-/" override="true"/

/Context

crossContext不能設(shè)置為true,這里注意(5)在你的solr home目錄創(chuàng)建solr.xml?xml version="1.0" encoding="UTF-8" ?

solr persistent="true"

cores adminPath="/admin/cores" zkClientTimeout="20000" hostPort="8080"

/cores

/solr

其他tomcat對應(yīng)設(shè)置對應(yīng)的端口號(6)編輯tomcat bin/catalina.sh(Windows下catalina.bat),加入JAVA_OPTS='-DzkHost=127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381'

這里就是solr和zookeeper交互的地方了(7)依次啟動tomcat,創(chuàng)建core及shard,訪問solr

分享題目:solr集群java代碼 solr schema
網(wǎng)頁網(wǎng)址:http://chinadenli.net/article2/ddgshic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作做網(wǎng)站建站公司定制開發(fā)Google網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)