solr單機版、叢集版整合spring
阿新 • • 發佈:2018-12-13
一、引言
今個起個大早,陽光依舊耀眼,趕緊把solr剩下未完成的結束掉。solr單機版、叢集版咱們都已經搭建好了,之前solr單機版也使用java中的solrj來維護索引庫,那麼今天講下solr叢集版怎麼使用solr來維護索引庫,以及solr整合spring框架。
首先solr需要使用的jar,引入進來!
<!-- solr客戶端 --> <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>4.10.3</version> </dependency>
二、使用solrj維護solr叢集索引庫
/** * 新增、修改文件 * @throws Exception */ @Test public void addDocment() throws Exception { //建立solr連線 //單機版 //SolrServer server = new HttpSolrServer("http://111.231.123.81:8080/solr"); //叢集版 //zhHost表示zookeeper的叢集地址 String zkHost = "111.231.110.123:2181,111.231.110.123:2182,111.231.110.123:2183"; CloudSolrServer server = new CloudSolrServer(zkHost); //設定預設Collection server.setDefaultCollection("collection1"); //以下操作都是一致的,刪除,查詢相同道理,只是連線方式不同 //建立一個文件物件 SolrInputDocument document = new SolrInputDocument(); //如果需要修改,即id一致即可 //item_title、item_price、item_desc這些欄位都是之前新增的業務欄位 document.addField("id","001"); document.addField("item_title","iPhone XS Max"); document.addField("item_price","9599"); document.addField("item_desc","iPhone XS Max 支援雙卡,給你更多選擇,為工作、生活都帶來更多便利5。這兩款 iPhone 還都提供最高達 512GB 的儲存容量,給你更廣闊的施展空間。另外,就算它們電量..."); //把文件寫入索引庫 server.add(document); //提交操作 server.commit(); }
三、整合spring
步驟一:applicationContext-solrj.xml,新建配置檔案,寫入如下配置。${SOLR.SERVER.URL}、${SOLR.zkHost.URL}、${SOLR.DEFAULTCOLLECTION},這些相對應的值小編放在properties配置檔案中了,也可以直接寫固定。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置SolrServer物件 --> <!-- 單機版 --> <!--<bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer"> <constructor-arg name="baseURL" value="${SOLR.SERVER.URL}"></constructor-arg> </bean>--> <!-- 叢集版 --> <bean id="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer"> <constructor-arg name="zkHost" value="${SOLR.zkHost.URL}"></constructor-arg> <property name="defaultCollection" value="${SOLR.DEFAULTCOLLECTION}"></property> </bean> </beans>
步驟二:java中使用,直接使用spring註解,@Autowired注入SolrServer。 SolrServer是HttpSolrServer、CloudSolrServer的父類,所以如果需要切換叢集版,只需要把單機版配置檔案註釋掉即可。不需要修改程式碼。
public interface SearchDao {
/**
* solr查詢是根據SolrQuery物件來的,所以引數是SolrQuery
* @param solrQuery
* @return
* @throws Exception
*/
SearchResult getSearchList(SolrQuery solrQuery) throws Exception;
}
@Repository
public class SearchDaoImpl implements SearchDao {
@Autowired
private SolrServer solrServer;
public Object getSearchList(SolrQuery solrQuery) throws Exception{
//根據專案的需求,具體實現,小編只是演示怎麼使用
return null;
}
}