ssm專案整合solr索引查詢
阿新 • • 發佈:2019-02-10
執行環境:
window7;jdk1.8;eclipse 之neno;tomcat7;solr 4;
1、安裝solr在tomcat下;(見分類solr之資料庫優化下的文章:window下安裝solr到tomcat中:http://blog.csdn.net/happy_bigqiang/article/details/73195137)
2、考慮要使用solr查詢的資料庫欄位,並把在solr的其中一個collection中設定域(同時設定中文分詞器,這裡id欄位可以不設,因為solr配置檔案schema.xml自動配置好了):
博主的schema.xml配置檔案的路徑在:
D:\ProgramFiles \solrhome\collection1\conf\schema.xml
在其中新增程式碼(注意這裡不能寫中文,包括註釋,為了便於讀者理解,博主寫一些中文解釋):
<!-- IKAnalyzer配置中文分詞器-->
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<!-- com.taotao.search.solr Field這裡博主要查五個欄位,除去id欄位還要配置四個,name可以隨意命名,只要方便閱讀即可-->
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="long" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="true" />
<!-- 這裡是複製域,是把四個域集中到一個域,方便solr查詢-->
<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_sell_point" dest="item_keywords"/>
<copyField source="item_category_name" dest="item_keywords"/>
3、因為solr已經安裝到tomcat中了,此時啟動tomcat(博主是點選D:\ProgramFiles\apache-tomcat-7.0.76\bin\startup.bat)
4、在pom.xml中引入solr的客戶端solrJ這個jar包,在工程中編寫測試程式碼:TestSolrj.java,並執行(這裡要注意因為博主使用的是maven工程構建,所以執行之前,要使用maven命令install這個工程,要不然用juint去執行會報找不到類的錯誤)
package com.taotao.solrJ;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;
public class TestSolrj {
@Test
public void testAddDocument ()throws Exception {
//建立一個SolrServer物件,建立一個HttpSolrServer物件
//需要指定Solr服務的url
//建立一個文件物件SolrInputDocument
//向文件中新增域,必須有id域,域的名稱必須在scheme.xml中定義
//把文件物件寫入索引庫
//提交
//建立一個SolrServer物件,建立一個HttpSolrServer物件
//需要指定Solr服務的url
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/collection1");
//建立一個文件物件SolrInputDocument
SolrInputDocument document = new SolrInputDocument();
//向文件中新增域,必須有id域,域的名稱必須在scheme.xml中定義
document.addField("id","test04");
document.addField("item_title","測試商品1");
document.addField("item_price",100);
//把文件物件寫入索引庫
solrServer.add(document);
//提交
solrServer.commit();
}
}
5、在瀏覽器中輸入http://localhost:8080/solr,進入solr自帶的後臺管理介面,選擇collection1例項,點選query查詢,就能發現測試程式碼中的已經建立,被查詢出來了,bingo!!!
6、這裡還未涉及如何將資料庫中的自動,通過程式碼匯入到solr中建立索引。