利用Solr服務建立的站內搜索雛形---solr1


最近看完nutch后總感覺像好好捯飭下solr,上次看到老大給我展現了下站內搜索我便久久不能忘懷。總覺着之前搭建的nutch配上solr還是有點呆板,在nutch爬取的時候就建立索引到solr服務下,然后在solr的管理界面中選擇query,比如在q選項框中將“*:*”改寫為“title:安徽”,則在管理界面中就能看到搜索結果,可是這個與搜索引擎的感覺差遠了,總感覺這些結果是被solr給套在他的管理界面中了,於是自己在網上搜索,也想整個站內搜索一樣的東西,就算整不到那么炫,只要整到在solr的管理界面以外的地方出現搜索結果我就心滿意足了……
 
網上海搜一番,發現有人做站內搜索的,但是也只是只言片語,沒有很全的(后來發現及時很全的也不一定適用於你,因為搞IT的都具有時效性,誰知道你當前看到的一個類是不是n年前就被標記為過時了不能用了),但是也沒辦法,多看看結合一下,於是自己開始動手拼接組裝程序了:
 
1.在程序中(我的環境是在Myeclipse中)要能夠與solr服務器通信,畢竟你的索引是存在solr中的,然后就是加入搜索條件和要搜索的字段,再者就是一個查詢類以及最后的結果的呈現,依次用到的是CommonsHttpSolrServer、SolrQuery、QueryResponse。
 
2.可是在組裝好代碼后運行是總是報錯,也沒有找到針對性的解決方案,但是調試的過程中把查詢的條件取出來放到瀏覽器中查詢是可以的,就是卡在QueryResponse qrsp = server.query(query); 這行,琢磨着應該是要換個純凈的工程,於是新建了個新的工程,按照網上要求的jar給導入,可是后來發現CommonsHttpSolrServer類總是無法導包,進入一看solrj的jar包下確實沒有這個類,所以針對性的在網上搜索后發現該類在solr3.6版本后就被拋棄了,改用HttpSolrServer了,再次感謝鏈接: http://wenwen.sogou.com/z/q423004525.htm
除了導入solr-solrj-4.6.0.jar以外還導入了以下jar包,這些jar都來源於自己下載的\solr-4.4.0\solr-4.4.0\dist\solrj-lib目錄下的所有jar包
 

 
3.有了jar包之后,就開始運行程序了,我的solr是裝在虛擬機里面,所以還要先到虛擬機中把tomcat服務啟動(我的solr服務已經部署到tomcat服務器下了),然后在win7系統的瀏覽器中輸入http://ip:8080/solr就可以訪問我虛擬機里的solr了,大體主體部分如下:
String url="http://ip:8080/solr/";
HttpSolrServer server = new HttpSolrServer(url); 
server.setSoTimeout(3000); // socket read timeout 
server.setConnectionTimeout(1000); 
server.setDefaultMaxConnectionsPerHost(1000); 
server.setMaxTotalConnections(10); 
server.setFollowRedirects(false); // defaults to false 
server.setAllowCompression(true); 
server.setMaxRetries(1);
注意以上的ip為自己的ip,我的端口是8080,因為用的tomcat服務器,如果你沒有部署到tomcat下,直接啟動solr的example下的服務應該是8389,上面主要是與solr服務通信以及一些參數的設置;
 
SolrQuery query = new SolrQuery(); 
query.setQuery("title:安徽"); 
query.addField("content");
query.setStart(0); 
query.setRows(15);
上面的這些代碼是生命一個查詢類,並賦給查詢條件以及查詢字段
 
QueryResponse qrsp = server.query(query); 
SolrDocumentList docs = qrsp.getResults(); 
Iterator it = docs.iterator(); 
while (it.hasNext()) { 
System.out.println(it.next()); 
}
 
這段代碼是接收相應的搜索結果以及遍歷顯示打印搜索結果。
 
 
 
雖然以上算不得什么搜索引擎,也沒有任何界面的顯示,但是我已很欣慰,因為都已經能搜索了,離我的小百度還遠么(開玩笑的^_^)下一步准備先看看solrj具體是怎么應用的,每個部分都如何使用的摸索弄個搜索引擎的模樣出來過過癮。

友情贊助

如果你覺得博主的文章對你那么一點小幫助,恰巧你又有想打賞博主的小沖動,那么事不宜遲,趕緊掃一掃,小額地贊助下,攢個奶粉錢,也是讓博主有動力繼續努力,寫出更好的文章^^。

    1. 支付寶                          2. 微信

                      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM