Solr单机和集群的安装,使用

来源:互联网 发布:c 并行与分布式编程 编辑:程序博客网 时间:2024/05/21 16:07

Solr的安装步骤

  1. 首先安装jdk
  2. 然后安装tomcat
  3. 然后解压缩solr安装包
  4. 复制 solr下的example/webapps目录下的solr.war复制到tomcat目录下的webapps下,
  5. 启动tomcat,关闭tomcat ,删除solr.war
  6. 复制solr目录下的lib/ext的所有jar到tomcat目录下的webapps/webapps/solr/WEB-INF/lib下
  7. 然后复制solr目录下example/solr所有文件到你自己创建的SolrHome文件夹下
  8. 修改tomcat下webapps/solr/WEB-INF/web.xml指定自己的solrhome
  9. 添加中文分析器IKAnalyzer2012FF_u1,我们解压缩IKAnalyzer2012FF_u1,然后把IKAnalyzer2012FF_u1.jar复制到tomcat下的solr工程lib文件夹下
  10. 在tomcat的solr工程中创建一个WEB-INF/classes然后复制IKAnalyzer2012FF_u1下的扩展文件,配置文件到该目录下
  11. 修改solrHome下的collection1/conf/schema.xml,添加一个fieldType
    <fieldType name="text_ik" class="solr.TextField">
    <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
    </fieldType>
  12. 配置自己的业务域
    <field name="item_title" type="text_ik" indexed="true" stored="true"/>
  13. 可以使用复合键 <copyField source="item_title" dest="item_keywords"/>

Solr集群的配置

  1. 配置solr集群,我们需要配置zookeeper集群
  2. zookeeper集群的配置可以参考我的dubbo使用中
  3. 我们需要复制配置过solr服务的tomcat复制4份,然后创建响应的SolrHome 然后修改各自的solr工程的web.xml指定自己的SolrHome,然后修改每个tomcat的server.xml的文件改变其端口(如果在一个机器上),但是我们需要在tomcat的bin目录下的catalina.sh,然后添加以下代码JAVA_OPTS="-DzkHost=192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"配置zookeeper集群的地址
  4. 启动各个zookeeper
  5. 修改各个solrhome下的collection1下的solr.xml指定自己对应的tomcat服务
  6. 我们使用解压缩的solr目录下的example/scripts/cloud-scripts/ 下使用命令./zkcli.sh -zkhost 192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf 随便找个solrhome下的配置上传。
  7. 启动各个tomcat
  8. 创建新的Collection进行分片处理。
    http://192.168.25.154:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
  9. 删除不用的Collection。
    http://192.168.25.154:8180/solr/admin/collections?action=DELETE&name=collection1

Solr的使用

添加索引

//单机版SolrServer solrServer=new HttpSolrServer("http://192.168.25.154:8080/solr"); //集群版SolrServer solrServer=new CloudSolrServer(zookeeper集群的地址)SolrInputDocument document=new SolrInputDocument();document.addField("id", itemIndex.getId());document.addField("item_title",itemIndex.getTitle());document.addField("item_sell_point", itemIndex.getSell_point());document.addField("item_price",itemIndex.getPrice());document.addField("item_image", itemIndex.getImage());document.addField("item_category_name",itemIndex.getCategory_name());document.addField("item_desc",itemIndex.getItem_desc());solrServer.add(document);solrServer.commit();

查询

    SolrServer solrServer=new HttpSolrServer("http://192.168.25.154:8080/solr");    //创建一个solrquery    SolrQuery query=new SolrQuery();    query.setQuery(queryString);    //设置默认的查询field    query.set("df", "item_title");    //分页    query.setStart((page-1)*rows);    query.setRows(rows);    //开启高亮    query.setHighlight(true);    query.addHighlightField("item_title");    query.setHighlightSimplePre("<font color='red'>");    query.setHighlightSimplePost("</font>");    QueryResponse response=solrServer.query(query);    SolrDocumentList documentList=response.getResults();

Solr与Spring的整合

单机版

<bean id="solrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">    <constructor-arg name="baseURL" value="http://10.118.16.75:8080/solr/collection1" /></bean>

集群版

<bean id="solrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer">    <constructor-arg name="zkHost" value="10.118.16.75:2182,10.118.16.75:2183,10.118.16.75:2184"></constructor-arg>    <property name="defaultCollection" value="collection1"></property></bean>
原创粉丝点击