首先搭建solr環境,如:solr6.0學習(一)環境搭建
修改各種配置文件。
1、修改solrhome下的solr.xml文件
注解掉zookeeper搭建集群配置,我們后面會采用master-slave的形式。
至於zookeeper的形式可以閱讀以下這篇文章【solrCloud集群配置指導】:http://www.aboutyun.com/thread-9432-1-1.html
- <!-- 結合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 -->
3、在【my_solr】文件夾中添加core.properties配置,內容如下:
- name=my_solr
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中修改如下:
- <codecFactory class="solr.SchemaCodecFactory"/>
- <!-- 解除managed-schema管理模式 start -->
- <schemaFactory class="ClassicIndexSchemaFactory"/>
- <!-- 解除managed-schema管理模式 end -->
缺少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文件,添加
- <field name="content_test" type="text_general" indexed="true" stored="true" multiValued="true"/>
2、添加索引數據,代碼如下:
編寫過程中可能會報錯,最簡便的方法是將web-inf下lib里所有jar包添加進來,然后運行,出什么錯,就添加什么jar包即可。
- 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) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- public static SolrClient getSolrClient(){
- return new HttpSolrClient(solrServerUrl+"/"+solrCroeHome);
- }
- }
其實其對於的是solconfig.xml中如下配置:
- <!-- 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>

紅色區域是針對不同的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和創建索引、查詢程序,完成!
