概念:
Collection:在SolrCloud集群中逻辑意义上的完整的索引。它常常被划分为一个或多个Shard,它们使用相同的Config Set。如果Shard数超过一个,它就是分布式索引,SolrCloud让你通过Collection名称引用它,而不需要关心分布式检索时需要使用的和Shard相关参数。
Config Set: Solr Core提供服务必须的一组配置文件。每个config set有一个名字。最小需要包括solrconfig.xml (SolrConfigXml)和schema.xml (SchemaXml),除此之外,依据这两个文件的配置内容,可能还需要包含其它文件。它存储在Zookeeper中。Config sets可以重新上传或者使用upconfig命令更新,使用Solr的启动参数bootstrap_confdir指定可以初始化或更新它。
Core: 也就是Solr Core,一个Solr中包含一个或者多个Solr Core,每个Solr Core可以独立提供索引和查询功能,每个Solr Core对应一个索引或者Collection的Shard,Solr Core的提出是为了增加管理灵活性和共用资源。在SolrCloud中有个不同点是它使用的配置是在Zookeeper中的,传统的Solr core的配置文件是在磁盘上的配置目录中。
Leader: 赢得选举的Shard replicas。每个Shard有多个Replicas,这几个Replicas需要选举来确定一个Leader。选举可以发生在任何时间,但是通常他们仅在某个Solr实例发生故障时才会触发。当索引documents时,SolrCloud会传递它们到此Shard对应的leader,leader再分发它们到全部Shard的replicas。
Replica: Shard的一个拷贝。每个Replica存在于Solr的一个Core中。一个命名为“test”的collection以numShards=1创建,并且指定replicationFactor设置为2,这会产生2个replicas,也就是对应会有2个Core,每个在不同的机器或者Solr实例。一个会被命名为test_shard1_replica1,另一个命名为test_shard1_replica2。它们中的一个会被选举为Leader。
Shard: Collection的逻辑分片。每个Shard被化成一个或者多个replicas,通过选举确定哪个是Leader。
Zookeeper: Zookeeper提供分布式锁功能,对SolrCloud是必须的。它处理Leader选举。Solr可以以内嵌的Zookeeper运行,但是建议用独立的,并且最好有3个以上的主机。
概念部分引用自:http://www.cnblogs.com/doit8791/p/4892989.html
0 建文件夹
假设有一个solr的Linux用户名
在usr/local下
sudo mkdir java
sudo chown solr:solr java
sudo mkdir solr
sudo chown solr:solr solr
sudo mkdir tomcat
sudo chown solr:solr tomcat
1.下载jdk, 解压到/usr/local/java
tar zxvf jdk-8u101-linux-x64.tar.gz
cp -r jdk1.8.0_101 /usr/local/java/
2.设置环境变量
cd /etc
vim profile
在末尾加上
export JAVA_HOME=/usr/local/java/jdk1.8.0_101
export JRE_HOME=/usr/local/java/jdk1.8.0_101/jre
export PATH=$PATH:/usr/local/java/jdk1.8.0_101/bin
export CLASSPATH=./:/usr/local/java/jdk1.7.0_75/lib:/usr/local/java/jdk1.8.0_101/jre/lib
3.source profile
4.java -version
安装solr
5.下载solr, 解压到/usr/local/solr
解压:tar xvfz solr-4.10.4.tgz
cp -r solr-4.10.4 /usr/local/solr/
6. 启动solr
cd /usr/local/solr/solr-4.10.4
bin/solr start
基于jetty的单机版就ok了
安装tomcat
7. 下载tomcat,解压到/usr/local/tomcat
tar zxvf apache-tomcat-7.0.70.tar.gz
cp -r apache-tomcat-7.0.70 /usr/local/tomcat/
8. 备份原来的webapps
mv webapp webapps.bak
新建一个webapps
mkdir webapps
9. 拷贝solr.war到webapps
cp solr.war /usr/local/tomcat/apache-tomcat-7.0.70/webapps/
10. 解压solr.war[如果用16步的方法,这里可以不解压]
jar -xvf solr.war
11. 建solrhome
/usr/local/solr$ mkdir solrhome
12. 修改web.xml
在/webapps/WEB-INF
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr/solrhome</env-entry-value># 重点是这个路径和11步里一致
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
13.将example\solr目录下的所有文件复制到你的 /user/local/solr/solrhome目录
cp -r solr/* /usr/local/solr/solrhome/
14.将\example\lib\ext下面的所有包复制到tomcat容器中的 tomcathome\lib下面/example/lib cp ext/* /usr/local/tomcat/apache-tomcat-7.0.70/lib/
15 修改端口, 在tomcat/apache-tomcat-7.0.70/conf$ vim server.xml
<Connector port="8983" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
16.12步可能不成功,用下面的方式
在apache-tomcat-7.0.70/conf/Catalina/localhost下新建solr.xml
<?xml version="1.0" encoding="utf-8"?>
<Context docBase="/usr/local/solr/solr-4.10.4/example/webapps/solr.war" debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="/usr/local/solr/solrhome" override="true"/>
</Context>
17.启动tomcat
bin/startup.sh
bin/shutdown.sh
18.新建core
拷贝一份默认的core
cp -r collection1 medical
修改medical下的core.properties
name=medical
重启tomcat
19.配置中文分词mmseg4j
下载对应版本的mmseg4j
https://github.com/chenlb/mmseg4j-solr
http://pan.baidu.com/s/1dD7qMFf#path=%252Fmmseg4j-solr
解压拷贝mmseg4j-core-1.10.0.jar mmseg4j-solr-2.2.0.jar
cp mmseg4j-*.jar /usr/local/tomcat/apache-tomcat-7.0.70/webapps/solr/WEB-INF/lib
一定这个目录,否则找不到
修改schema.xml
<fieldtype name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/>
</analyzer>
</fieldtype>
<fieldtype name="textMaxWord" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" />
</analyzer>
</fieldtype>
<fieldtype name="textSimple" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="n:/custom/path/to/my_dic" />
</analyzer>
</fieldtype>