天天看點

搭建windows的solr6伺服器(二)

修改各種配置檔案。

1、修改solrhome下的solr.xml檔案

注解掉zookeeper搭建叢集配置,我們後面會采用master-slave的形式。

至于zookeeper的形式可以閱讀以下這篇文章【solrCloud叢集配置指導】:http://www.aboutyun.com/thread-9432-1-1.html

搭建windows的solr6伺服器(二)

<!-- 結合zookeeper配置solrColound start -->  

  <!-- 采用master-slave的方式  

  <solrcloud>  

    <str name="host">${host:}</str>  

    <int name="hostPort">${jetty.port:8983}</int>  

    <str name="hostContext">${hostContext:solr}</str>  

    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>  

    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>  

    <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>  

    <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>  

  </solrcloud>  

  <shardHandlerFactory name="shardHandlerFactory"  

    class="HttpShardHandlerFactory">  

    <int name="socketTimeout">${socketTimeout:600000}</int>  

    <int name="connTimeout">${connTimeout:60000}</int>  

  </shardHandlerFactory>  

  -->  

<!-- 結合zookeeper配置solrColound end -->  

2、在sorlhome檔案夾下建立【my_solr】檔案夾。

3、在【my_solr】檔案夾中添加core.properties配置,内容如下:

搭建windows的solr6伺服器(二)

name=my_solr  

這個name的值實際上就core的名稱,可以任意命名,為了保證統一和友善閱讀,個人覺得最好和檔案夾名稱一緻。

4、将【solr-6.0.0\example\example-DIH\solr\solr】下的conf檔案夾拷貝到【my_solr】檔案夾下。包含如下檔案:

搭建windows的solr6伺服器(二)

【conf】中檔案目錄如下:

搭建windows的solr6伺服器(二)

5、solr-5.0 以上預設對schema的管理是使用managed-schema,不能手動修改,需要使用Schema Restful的API操作。

如果要想手動修改配置,把【conf】檔案夾中managed-schema拷貝一份修改為schema.xml,在solrconfig.xml中修改如下:

搭建windows的solr6伺服器(二)

<codecFactory class="solr.SchemaCodecFactory"/>  

  <!-- 解除managed-schema管理模式 start -->  

  <schemaFactory class="ClassicIndexSchemaFactory"/>  

  <!-- 解除managed-schema管理模式 end -->  

重新開機tomcat8,可能會報錯,檢視tomcat日志發現,比喻:

缺少DataImportHandler的jar等,那麼将【solr-6.0.0\dist】下的solr-dataimporthandler-6.0.0.jar和solr-dataimporthandler-extras-6.0.0.jar

拷貝到【apache-tomcat-8.0.33\webapps\solr\WEB-INF\lib】下。

重新開機tomcat8。如果缺少其他jar包,根據報錯資訊添加即可。沒有異常,

通路:【http://localhost:8080/solr/index.html#/】

會出現如下界面:

搭建windows的solr6伺服器(二)

選擇my_solr,會出現如下界面:

搭建windows的solr6伺服器(二)

至此其實由于沒有索引資料,其實solr是個空殼,那麼下面寫一個應用程式插入solr索引資料。

參考:http://www.open-open.com/lib/view/open1452062296995.html

1、首先需要修改schema.xml檔案,添加

搭建windows的solr6伺服器(二)

<field name="content_test" type="text_general" indexed="true" stored="true" multiValued="true"/>  

field的屬性和配置,可以google一下schema.xml 說明很多,用法也很多,這裡就不贅述。

2、添加索引資料,代碼如下:

編寫過程中可能會報錯,最簡便的方法是将web-inf下lib裡所有jar包添加進來,然後運作,出什麼錯,就添加什麼jar包即可。

搭建windows的solr6伺服器(二)

package com.solr.insertData;  

import java.io.IOException;  

import java.util.ArrayList;  

import java.util.List;  

import org.apache.solr.client.solrj.SolrClient;  

import org.apache.solr.client.solrj.SolrServerException;  

import org.apache.solr.client.solrj.impl.HttpSolrClient;  

import org.apache.solr.common.SolrInputDocument;  

public class InsertProgarm {  

    //solr 伺服器位址  

    public static final String solrServerUrl = "http://localhost:8080/solr";  

    //solrhome下的core  

    public static final String solrCroeHome = "my_solr";  

    //待索引、查詢字段  

    public static String[] docs = {"Solr是一個獨立的企業級搜尋應用伺服器",  

                                    "它對外提供類似于Web-service的API接口",  

                                    "使用者可以通過http請求",  

                                     "向搜尋引擎伺服器送出一定格式的XML檔案生成索引",  

                                    "也可以通過Http Get操作提出查找請求",  

                                    "并得到XML格式的傳回結果"};  

    public static void main(String[] args) {  

        SolrClient client = getSolrClient();  

        int i=0;  

        List<SolrInputDocument> solrDocs = new ArrayList<SolrInputDocument>();  

        for (String content : docs) {  

            SolrInputDocument doc = new SolrInputDocument();  

            doc.addField("id", i++);  

            doc.addField("content_test", content);  

            solrDocs.add(doc);  

        }  

        try {  

            client.add(solrDocs);  

            client.commit();  

        } catch (SolrServerException e) {  

            // TODO Auto-generated catch block  

            e.printStackTrace();  

        } catch (IOException e) {  

    }  

    public static SolrClient getSolrClient(){  

        return new HttpSolrClient(solrServerUrl+"/"+solrCroeHome);  

}  

3、運作成功後,會在【solrhome/my_solr】檔案夾下建立一個【data】的檔案夾,這個檔案夾中的内容就是我們的solr索引。

其實其對于的是solconfig.xml中如下配置:

搭建windows的solr6伺服器(二)

<!-- Data Directory  

       Used to specify an alternate directory to hold all index data  

       other than the default ./data under the Solr home.  If  

       replication is in use, this should match the replication  

       configuration.  

    -->  

  <dataDir>${solr.data.dir:}</dataDir>  

4、通路http://localhost:8080/solr/index.html選擇【my_solr】core,選擇query得到如下界面:

搭建windows的solr6伺服器(二)

選擇【my_solr】core,選擇query,點選【Execute Query】查詢結果如下:

搭建windows的solr6伺服器(二)

其實其通路的url實際為:http://localhost:8080/solr/my_solr/select?q=*%3A*&wt=json&indent=true

至于q、wt、indent等參數,代表的含義,可以搜尋solr查詢文法。

那麼至此,我們就将solr插件完畢,結合了core和建立索引、查詢程式,完成!

本文轉自快樂就好部落格園部落格,原文連結:http://www.cnblogs.com/happyday56/p/5728441.html,如需轉載請自行聯系原作者