1谜洽、Solr是什么?
Solr 是Apache下的一個頂級開源項目吴叶,采用Java開發(fā)阐虚,它是基于Lucene的全文搜索服務(wù)器。Solr提供了比Lucene更為豐富的查詢語言蚌卤,同時實現(xiàn)了可配置实束、可擴展奥秆,并對索引、搜索性能進行了優(yōu)化咸灿。
Solr是一個全文檢索服務(wù)器构订,只需要進行配置就可以實現(xiàn)全文檢索服務(wù)。
2避矢、solr的安裝
1悼瘾、安裝jdk1.7
具體參考我的文章:Centos7下安裝jdk1.7。這里不再贅述审胸。
2亥宿、安裝tomcat
(1)上傳并解壓tomcat7安裝包:
tar -zxf apache-tomcat-7.0.47.tar.gz
(2)創(chuàng)建solr文件夾,并將解壓后的tomcat復(fù)制過去:
[root@bogon ~]# mkdir /usr/local/solr
[root@bogon ~]# cp apache-tomcat-7.0.47 /usr/local/solr/tomcat -r
3砂沛、安裝solr
(1)上傳并解壓solr安裝包:
tar -zxf solr-4.10.3.tgz.tgz
(2)把solr-4.10.3/dist/solr-4.10.3.war包部署到tomcat下烫扼。并改名為solr.war:
[root@bogon dist]# cp solr-4.10.3.war /usr/local/solr/tomcat/webapps/solr.war
(3)解壓war包。啟動tomcat自動解壓碍庵。關(guān)閉tomcat映企。刪除solr.war.
啟動命令:sh bin/startup.sh
停止命令:sh bin/shutdown.sh
(4)把solr-4.10.3/example/lib/ext 目錄下所有的jar包復(fù)制到solr工程中:
[root@bogon ext]# cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
(5)在solr下創(chuàng)建solrhome。Solrhome是存放solr服務(wù)器所有配置文件的目錄:
[root@bogon example]# pwd
/root/solr-4.10.3/example
[root@bogon example]# cp -r solr /usr/local/solr/solrhome
(6)告訴solr服務(wù)器solrhome的位置怎抛。需要修改solr工程的web.xml文件卑吭。
(7)啟動tomcat,測試solr马绝。
3豆赏、Solr的使用
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
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.Test;
public class TestSolrj {
/**
* 在solr中增加數(shù)據(jù)
* @throws Exception
*/
@Test
public void addDocument() throws Exception{
SolrServer solrServer = new HttpSolrServer("http://10.10.1.146:8080/solr");
SolrInputDocument document = new SolrInputDocument();
document.addField("id","test01");
document.addField("item_title","測試商品");
document.addField("item_price","100");
solrServer.add(document);
solrServer.commit();
}
/**
* 在solr中修改數(shù)據(jù)(id相同,即可修改相應(yīng)數(shù)據(jù))
* @throws Exception
*/
@Test
public void updateDocument() throws Exception{
SolrServer solrServer = new HttpSolrServer("http://10.10.1.146:8080/solr");
SolrInputDocument document = new SolrInputDocument();
document.addField("id","test01");
document.addField("item_title","測試商品2");
document.addField("item_price","200");
solrServer.add(document);
solrServer.commit();
}
/**
* 在solr中刪除數(shù)據(jù)
* @throws Exception
*/
@Test
public void deleteDocument() throws Exception{
SolrServer solrServer = new HttpSolrServer("http://10.10.1.146:8080/solr");
//根據(jù)id刪除
solrServer.deleteById("test01");
//根據(jù)查詢條件刪除
//solrServer.deleteByQuery("*:*");
solrServer.commit();
}
/**
* 在solr中查詢數(shù)據(jù)
* @throws Exception
*/
@Test
public void queryDocument() throws Exception {
SolrServer solrServer = new HttpSolrServer("http://10.10.1.146:8080/solr");
//創(chuàng)建一個查詢對象
SolrQuery query = new SolrQuery();
//設(shè)置查詢條件
query.setQuery("*:*");
query.setStart(20);
query.setRows(50);
//執(zhí)行查詢
QueryResponse response = solrServer.query(query);
//取查詢結(jié)果
SolrDocumentList solrDocumentList = response.getResults();
System.out.println("共查詢到記錄:" + solrDocumentList.getNumFound());
for (SolrDocument solrDocument : solrDocumentList) {
System.out.println(solrDocument.get("id"));
System.out.println(solrDocument.get("item_title"));
System.out.println(solrDocument.get("item_price"));
System.out.println(solrDocument.get("item_image"));
}
}
}