• 搭建windows的solr6服务器(二)


    首先搭建solr环境,如:solr6.0学习(一)环境搭建

    修改各种配置文件。

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

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

    至于zookeeper的形式可以阅读以下这篇文章【solrCloud集群配置指导】:http://www.aboutyun.com/thread-9432-1-1.html

    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配置,内容如下:

    1. name=my_solr  
    这个name的值实际上就core的名称,可以任意命名,为了保证统一和方便阅读,个人觉得最好和文件夹名称一致。

    4、将【solr-6.0.0exampleexample-DIHsolrsolr】下的conf文件夹拷贝到【my_solr】文件夹下。包含如下文件:

    【conf】中文件目录如下:

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

    如果要想手动修改配置,把【conf】文件夹中managed-schema拷贝一份修改为schema.xml,在solrconfig.xml中修改如下:

    1. <codecFactory class="solr.SchemaCodecFactory"/>  
    2.   <!-- 解除managed-schema管理模式 start -->  
    3.   <schemaFactory class="ClassicIndexSchemaFactory"/>  
    4.   <!-- 解除managed-schema管理模式 end -->  
    重启tomcat8,可能会报错,查看tomcat日志发现,比喻:

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

    拷贝到【apache-tomcat-8.0.33webappssolrWEB-INFlib】下。

    重启tomcat8。如果缺少其他jar包,根据报错信息添加即可。没有异常,

    访问:【http://localhost:8080/solr/index.html#/】

    会出现如下界面:


    选择my_solr,会出现如下界面:


    至此其实由于没有索引数据,其实solr是个空壳,那么下面写一个应用程序插入solr索引数据。

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

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

    1. <field name="content_test" type="text_general" indexed="true" stored="true" multiValued="true"/>  
    field的属性和配置,可以google一下schema.xml 说明很多,用法也很多,这里就不赘述。

    2、添加索引数据,代码如下:

    编写过程中可能会报错,最简便的方法是将web-inf下lib里所有jar包添加进来,然后运行,出什么错,就添加什么jar包即可。

    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中如下配置:

    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和创建索引、查询程序,完成!

  • 相关阅读:
    pip 安装
    「csp模拟」模拟测试15
    某些博客的优化
    晚间测试6
    「csp模拟」模拟测试15
    「csp模拟」模拟测试14
    线段树维护单调栈
    晚间测试 2
    晚间测试 1
    晚间测试4
  • 原文地址:https://www.cnblogs.com/happyday56/p/5728441.html
Copyright © 2020-2023  润新知