1. 程式人生 > >ssm專案整合solr索引查詢

ssm專案整合solr索引查詢

執行環境:
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中建立索引。