搭建windows的solr6服務器(二)


首先搭建solr環境,如:solr6.0學習(一)環境搭建

修改各種配置文件。

1、修改solrhome下的solr.xml文件

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

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

[html] view plain copy 在CODE上查看代碼片派生到我的代碼片
  1. <!-- 結合zookeeper配置solrColound start -->  
  2.   <!-- 采用master-slave的方式  
  3.   <solrcloud>  
  4.   
  5.     <str name="host">${host:}</str>  
  6.     <int name="hostPort">${jetty.port:8983}</int>  
  7.     <str name="hostContext">${hostContext:solr}</str>  
  8.   
  9.     <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>  
  10.   
  11.     <int name="zkClientTimeout">${zkClientTimeout:30000}</int>  
  12.     <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>  
  13.     <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>  
  14.   
  15.   </solrcloud>  
  16.   
  17.   <shardHandlerFactory name="shardHandlerFactory"  
  18.     class="HttpShardHandlerFactory">  
  19.     <int name="socketTimeout">${socketTimeout:600000}</int>  
  20.     <int name="connTimeout">${connTimeout:60000}</int>  
  21.   </shardHandlerFactory>  
  22.   -->  
  23. <!-- 結合zookeeper配置solrColound end -->  
2、在sorlhome文件夾下創建【my_solr】文件夾。

3、在【my_solr】文件夾中添加core.properties配置,內容如下:

[html] view plain copy 在CODE上查看代碼片派生到我的代碼片
  1. name=my_solr  
這個name的值實際上就core的名稱,可以任意命名,為了保證統一和方便閱讀,個人覺得最好和文件夾名稱一致。

4、將【solr-6.0.0\example\example-DIH\solr\solr】下的conf文件夾拷貝到【my_solr】文件夾下。包含如下文件:

【conf】中文件目錄如下:

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

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

 

[html] view plain copy 在CODE上查看代碼片派生到我的代碼片
  1. <codecFactory class="solr.SchemaCodecFactory"/>  
  2.   <!-- 解除managed-schema管理模式 start -->  
  3.   <schemaFactory class="ClassicIndexSchemaFactory"/>  
  4.   <!-- 解除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#/】

會出現如下界面:


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


至此其實由於沒有索引數據,其實solr是個空殼,那么下面寫一個應用程序插入solr索引數據。

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

1、首先需要修改schema.xml文件,添加

 

[html] view plain copy 在CODE上查看代碼片派生到我的代碼片
  1. <field name="content_test" type="text_general" indexed="true" stored="true" multiValued="true"/>  
field的屬性和配置,可以google一下 schema.xml 說明很多,用法也很多,這里就不贅述。

2、添加索引數據,代碼如下:

編寫過程中可能會報錯,最簡便的方法是將web-inf下lib里所有jar包添加進來,然后運行,出什么錯,就添加什么jar包即可。

 

[java] view plain copy 在CODE上查看代碼片派生到我的代碼片
  1. package com.solr.insertData;  
  2.   
  3.   
  4. import java.io.IOException;  
  5. import java.util.ArrayList;  
  6. import java.util.List;  
  7.   
  8. import org.apache.solr.client.solrj.SolrClient;  
  9. import org.apache.solr.client.solrj.SolrServerException;  
  10. import org.apache.solr.client.solrj.impl.HttpSolrClient;  
  11. import org.apache.solr.common.SolrInputDocument;  
  12.   
  13. public class InsertProgarm {  
  14.     //solr 服務器地址  
  15.     public static final String solrServerUrl = "http://localhost:8080/solr";  
  16.     //solrhome下的core  
  17.     public static final String solrCroeHome = "my_solr";  
  18.     //待索引、查詢字段  
  19.     public static String[] docs = {"Solr是一個獨立的企業級搜索應用服務器",  
  20.                                     "它對外提供類似於Web-service的API接口",  
  21.                                     "用戶可以通過http請求",  
  22.                                      "向搜索引擎服務器提交一定格式的XML文件生成索引",  
  23.                                     "也可以通過Http Get操作提出查找請求",  
  24.                                     "並得到XML格式的返回結果"};  
  25.     public static void main(String[] args) {  
  26.         SolrClient client = getSolrClient();  
  27.         int i=0;  
  28.         List<SolrInputDocument> solrDocs = new ArrayList<SolrInputDocument>();  
  29.         for (String content : docs) {  
  30.             SolrInputDocument doc = new SolrInputDocument();  
  31.             doc.addField("id", i++);  
  32.             doc.addField("content_test", content);  
  33.             solrDocs.add(doc);  
  34.         }  
  35.         try {  
  36.             client.add(solrDocs);  
  37.             client.commit();  
  38.         } catch (SolrServerException e) {  
  39.             // TODO Auto-generated catch block  
  40.             e.printStackTrace();  
  41.         } catch (IOException e) {  
  42.             // TODO Auto-generated catch block  
  43.             e.printStackTrace();  
  44.         }  
  45.           
  46.     }  
  47.     public static SolrClient getSolrClient(){  
  48.         return new HttpSolrClient(solrServerUrl+"/"+solrCroeHome);  
  49.     }  
  50.   
  51. }  
3、運行成功后,會在【solrhome/my_solr】文件夾下創建一個【data】的文件夾,這個文件夾中的內容就是我們的solr索引。

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

 

[html] view plain copy 在CODE上查看代碼片派生到我的代碼片
  1. <!-- Data Directory  
  2.   
  3.        Used to specify an alternate directory to hold all index data  
  4.        other than the default ./data under the Solr home.  If  
  5.        replication is in use, this should match the replication  
  6.        configuration.  
  7.     -->  
  8.   <dataDir>${solr.data.dir:}</dataDir>  
4、訪問http://localhost:8080/solr/index.html選擇【my_solr】core,選擇query得到如下界面:




紅色區域是針對不同的ui,因為瀏覽器版本問題,我這里面選擇使用【Use original UI】,會跳轉到http://localhost:8080/solr/old.html#/

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


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

至於q、wt、indent等參數,代表的含義,可以搜索solr查詢語法。


那么至此,我們就將solr插件完畢,結合了core和創建索引、查詢程序,完成!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM