solr7java代碼的簡單介紹

java web 怎么用solr

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

創(chuàng)新互聯(lián)2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務公司,擁有項目網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元周口做網(wǎng)站,已為上家服務,為周口各地企業(yè)和個人服務,聯(lián)系電話:18980820575

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

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

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

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

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

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

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

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

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

詳見下面的“solr home說明”

l example/webapps:Jetty的webapps目錄,該目錄通常用來放置Java的Web應用程序。在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項目的整個源代碼。這里對其各個子目錄也做相應的介紹。

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

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

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

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

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

1.4.2 Solr home說明

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

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

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

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

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

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

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

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

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

Solr是如何找到運行所需要的home目錄的呢?

Solr首先檢查名為solr.solr.home的Java系統(tǒng)屬性,有幾種不同的方式來設(shè)置該Java系統(tǒng)屬性。一種不管你使用什么樣的Java應用服務器或Servlet引擎都通用的方法是在調(diào)用Java的命令行中進行設(shè)置。所以,你可以在啟動Jetty的時候顯式地指定Solr的home目錄java -Dsolr.solr.home=solr/ -jar start.jar。另一種通用的方法是使用JNDI,將home目錄綁定到java: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

實際上這段XML在web.xml文件中已經(jīng)存在,你只需要把原來注釋掉的xml取消注釋,添加你所要指向的home目錄即可。因為修改了web.xml文件,所以你需要運行antdist-war來重新打包之后再部署WAR文件。

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

在產(chǎn)品環(huán)境中,我們必須設(shè)置Solr的home目錄而不是讓其默認指向solr/。而且應該使用絕對路徑,而不是相對路徑,因為你有可能從不同的目錄下面啟動應用服務器。

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

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

SolrServlet類繼承HttpServlet類,只有四個方法:

· init()

· destroy()

· doGet()

· doPost()

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

· Config:

· SolrCore:

屬于request包的有:

· SolrQueryResponse:

· QueryResponseWriter:

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

當用戶請求進來時doPost()簡單地將任務交給doGet()完成,主要的任務由doGet()完成。分析一下doGet()方法:

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

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

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

如何配置自己的 solr java 搜索

我知道的大概有以下這么幾種方式

1.在eclipse里搭好了solr的項目,部署到窗口時,先配置運行參數(shù)

2.如果你的容器是tomcat,可以修改catalina.bat文件,在第一行加上如下參數(shù)

solr 使用java jdbc查詢

空指針,有這么幾種情況,一般是你進行查詢的時候傳遞的參數(shù)有問題或者是查詢回來的返回值跟實體映射不對,打斷點調(diào)試一下,一步一步看總能找到問題

關(guān)于solr加上baseAuth安全認證后怎么用java的org.apache.solr.client.solrj包去訪問并查詢數(shù)據(jù)?

Using BasicAuth with SolrJ

In SolrJ, the basic authentication credentials need to be set for each request as in this example:

SolrRequest req ;//create a new request object req.setBasicAuthCredentials(userName, password); solrClient.request(req);

Query example:

QueryRequest req = new QueryRequest(new SolrQuery("*:*")); req.setBasicAuthCredentials(userName, password); QueryResponse rsp = req.process(solrClient);

如何獲取lucene的java源代碼

1.啟動eclipse,使用svn插件從把trunk代碼checkout出來。

2.如果你沒有安裝ant,那么先安裝ant(ant.apache.org)。

3.進入cmd,切入到源代碼目錄(在lucene和solr目錄的上一級)。

4.然后使用ant eclipse(如果你沒有安裝ivy的話,ant會提示你安裝,按照提示安裝)

5.在eclipse中創(chuàng)建java project,勾掉Use default location,選擇luence,然后下一步直到完成導入lucene,同樣的導入solr。

6.因為solr引用lucene,所以在solr的buildpath中加入對lucene項目引用。

solr3.5中如何用java代碼為PDF,Office等文件添加索引

1、將解壓包中的solr-4.7.1/dist/solr-4.7.1.war復制到tomcat_dir/webapps/目錄,并命名為solr.war。

2、將solr-4.7.1/example/lib/ext/目錄下的jar文件復制到tomcat/lib目錄下,將solr-4.7.1/example/resources/下的log4j.properties文件復制到tomcat_dir/lib目錄下;

切把 solr-4.7.1/example/solr,復制到tomcat_dir/bin下。

3、修改tomcat_dir/conf/server.xml

Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"

URIEncoding="UTF-8" /

4、創(chuàng)建solr.xml,存放在路徑:tomcat/conf/Catalina/localhost/solr.xml,內(nèi)容:

Context path="/solr" docBase="C:\Tomcat 7.0\webapps\solr.war"

debug="0" crossContext="true"

Environment name="solr/home" type="java.lang.String" value="C:\Tomcat 7.0\bin\solr\" override="true" /

/Context

PS:上面的docBase和value路徑中不能存在中文字符,否則會出現(xiàn)404錯誤。

5、將C:\Tomcat 7.0\webapps下的solr.war包,啟動項目解壓;然后再添加幾個jar包:

solr-4.7.1\dist\solr-dataimporthandler-4.7.1.jar;

solr-4.7.1\dist\solr-dataimporthandler-extras-4.7.1.jar;

還要加載數(shù)據(jù)庫驅(qū)動包:mysql-connector-java-3.1.13-bin.jar

6、在C:\Tomcat 7.0\bin\solr\collection1\conf 下的solrconfig.xml增加以下數(shù)據(jù)庫配置:

requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"

lst name="defaults"

str name="config"data-config.xml/str

/lst

/requestHandler

7、將tomcat\bin\solr\collection1\conf下增加data-config.xml文件,內(nèi)容如下:

dataConfig

dataSource type="JdbcDataSource"

driver="com.mysql.jdbc.Driver"

url="jdbc:mysql://192.168.1.221:3306/tmsdb"

user="root"

password="123456"/

document name="content"

entity name="node" query="select id,author,title,content from solrdb"

field column="id" name="id" /

field column="author" name="author" /

field column="title" name="title" /

field column="content" name="content" /

/entity

/document

/dataConfig

8、增加中文分詞器,ik-analyzer的配置如下:

①目前的中文分詞主要有兩種

1,基于中科院ICTCLAS的隱式馬爾科夫hhmm算法的中文分詞器,例如smartcn等。(不支持自定義擴展詞庫)

2,基于正向迭代最細粒度切分算法(正向最大匹配并且最細分詞)例如IK,庖丁等(支持自定義擴展詞庫)

安裝分詞前,可以去下載IK的分詞包 :

IK-Analyzer-4.7.1-0.0.1-SNAPSHOT.jar

下載完畢后,將此包放進tomcat\solr的\WEB-INF\lib下面:tomcat\webapps\solr\WEB-INF\lib 。

下面需要在solr的schemal.xml進行分詞器注冊:

!-- 配置IK分詞器 --

fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100"

analyzer type="index"

!-- 分詞--

tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/

!-- 禁用詞過濾根據(jù)情況使用--

!-- filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/ --

/analyzer

analyzer type="query"

!-- 分詞--

tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/

!-- 禁用詞過濾根據(jù)情況使用--

!-- filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/--

/analyzer

/fieldType

最后還得配置一個引用字段就OK了

field name="ik" type="text_ik" indexed="true" stored="true" multiValued="true"/

②它的安裝部署十分簡單,將IKAnalyzer2012.jar部署亍項目的lib目錄中;IKAnalyzer.cfg.xml不stopword.dic文件放置在class根目錄(對于web項目,通常是WEB-I NF/classes目彔,同hibernate、log4j等配置文件相同)下即可 ;然后配置solr4.7中schema.xml配置解析器:

schema name="example" version="1.1"

……

fieldType name="text" class="solr.TextField"

analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/

/fieldType

……

/schema

網(wǎng)站名稱:solr7java代碼的簡單介紹
網(wǎng)址分享:http://muchs.cn/article36/phiisg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、外貿(mào)網(wǎng)站建設(shè)動態(tài)網(wǎng)站、App開發(fā)全網(wǎng)營銷推廣、ChatGPT

廣告

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

外貿(mào)網(wǎng)站制作