http://hi.baidu.com/hsm228/item/82fea4d882432714d90e44be
一、安装配置
所需JDK和Tomcat和安装包solr-4.2.1.tgz
Tomcat安装目录 /usr/local/tomcat
修改Tomcat支持中文
# vi /usr/local/tomcat/conf/server.xml
<Connector port="8080" URIEncoding="UTF-8" />
# tar xvf /root/solr-4.2.1.tgz
# cp /root/solr-4.2.1/dist/solr-4.2.1.war /usr/local/tomcat/webapps/solr.war
# cp -r /root/solr-4.2.1/example/solr /usr/local/tomcat/
导入下面包 同时 IKAnalyzer2012FF_u1.jar mysql-connector-java-5.1.24-bin.jar也导入
# cp -r /root/solr-4.2.1/dist/solr*.jar /usr/local/tomcat/webapps/solr/WEB-INF/lib/
# cp -r /root/solr-4.2.1/contrib/extraction/lib/* /usr/local/tomcat/webapps/solr/WEB-INF/lib/
修改tomcat下solr\WEB-INF\web.xml找到 <env-entry>节点
# vi /usr/local/tomcat/webapps/solr/WEB-INF/web.xml
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/tomcat/solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
重启Tomcat http://192.168.1.52:8080/solr
二、中文分词
1、IK 分词器
下载 http://code.google.com/p/ik-analyzer/downloads/list
mv /root/IKAnalyzer2012FF_u1.jar /usr/local/tomcat/webapps/solr/WEB-INF/lib/
# vi /usr/local/tomcat/solr/collection1/conf/schema.xml
<field name="ik" type="text_ik" indexed="true" stored="true"/>
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
重启Tomcat http://192.168.1.52:8080/solr
选择collection1 -> Analysis >> Analyse Fieldname / FieldType选择 ik
2、mmseg4j 分词器
<dependency>
<groupId>com.chenlb.mmseg4j</groupId>
<artifactId>mmseg4j-core</artifactId>
<version>1.9.0</version>
</dependency>
将mmseg4j-1.9.1-SNAPSHOT/dist/下三个包复制到 /usr/local/tomcat/webapps/solr/WEB-INF/lib/
# vi /usr/local/tomcat/solr/collection1/conf/schema.xml
<field name="mm_complex" type="textComplex" indexed="true" stored="true"/>
<field name="mm_title" type="textComplex" indexed="true" stored="true"/>
<fieldType name="textComplex" class="solr.TextField" >
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex"/>
</analyzer>
</fieldType>
重启Tomcat http://192.168.1.52:8080/solr
选择collection1 -> Analysis >> Analyse Fieldname / FieldType选择 textComplex
3、smartcn 分词器
# cp /root/solr-4.2.1/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-4.2.1.jar /usr/local/tomcat/webapps/solr/WEB-INF/lib/
# vi /usr/local/tomcat/solr/collection1/conf/schema.xml
<field name="text_zh" type="text_zh" indexed="true" stored="true"/>
<fieldType name="text_zh" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/>
<filter class="solr.SmartChineseWordTokenFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PositionFilterFactory" />
</analyzer>
</fieldType>
三、优化
通过更改其中的dataDir属性来指定索引文件的存放位置,对于有大数据量的情况下还要进行自动commit操作配置,以下设置为当内存索引量达到20W条时自动进行往磁盘写操作,以免堆溢出,这也是解决单 个入库xml文件最好不要超过30M的有效方法:
# vi /usr/local/tomcat/solr/collection1/conf/solrconfig.xml
<autocommit>
<maxdocs>200000</maxdocs>
</autocommit>
四、Solr导入Xml
schema.xml的字段配置部分如下:
<field name="id" type="string" stored="true" indexed="true"/>
<field name="name" type="string" stored="true" indexed="true" omitNorms="false"/>
<field name="content" type="string" stored="true" indexed="true"/>
# vi /opt/books.xml
<add overwrite="true" commitWithin="10000">
<doc>
<field name="id">1</field>
<field name="name" boost="2">Some Book</field>
<field name="content">首先建立证书链,从我们目前的证书为基础,一直上溯到Root CA的证书.
如果中间有任何问题,比如找不到某个证书的颁发者的证书</field>
</doc>
<doc boost="2.5">
<field name="id">2</field>
<field name="name" boost="2">Important Book</field>
<field name="content"> 现在得到链条上所有CA的名称和证书了,下一步是去检查第一个证书的用途是否和签发时候批准的一样。其他的证书则必须都是作为CA证书而颁发的</field>
</doc>
<doc>
<field name="id">3</field>
<field name="name" boost="2">Some other book</field>
<field name="content">如果验证操作有问题了,那么打印出来的结果可能会让人有点模糊</field>
</doc>
</add>
说明:
overwrite="true" :告诉solr在做索引的时候,如果文档已经存在,就用xml中的文档进行替换
commitWithin="10000" :告诉solr 在做索引的时候,每个10000(10s)毫秒,做一次文档提交
boost:用来指明文档或者字段的重要程度,默认值为:1.0,在这个示例中,第二个文档的boost值为2.5,表示比其它两个文档更重要
omitNorms="false":这个属性值表示是否忽略字段的的规范,此处设为否。如果要在做索引的时候指定字段的重要程度,必须使用字段的长度规范。
如果设置为true,那么这些字段在索引时不会增加重要程度
linux下提交文档
# curl http://localhost:8080/solr/update --data-binary @books.xml -H 'Content-type:text/xml; charset=utf-8'
选择collection1 -> Query >> q输入"模糊" 有1个结果
五、Solr导入Json
# vi /opt/books.json
{
"add": {
"doc": {
"id": 1,
"name": "Some book",
"content": ["中国John", "Marry"]
}
}
,
"add": {
"boost": 2.5,
"doc": {
"id": 2,
"name": "Important Book",
"content": ["中国Harry", "Jane"]
}
}
,
"add": {
"doc": {
"id": 3,
"name": "Some other book",
"content": "泰国使用手册Marry"
}
}
}
先查询下solrconfig.xml中有没有配置:
# vi /usr/local/tomcat/solr/collection1/conf/solrconfig.xml
<requestHandler name="/update/json" class="solr.JsonUpdateRequestHandler" />
linux下提交文档
# curl "http://localhost:8080/solr/update/json?commit=true" --data-binary @books.json -H 'Content-type:text/json; charset=utf-8'
选择collection1 -> Query >> q输入"模糊" 有1个结果
六、Solr导入Pdf或Word或Ppt或Excel或Txt或Html或Eml
# vi /usr/local/tomcat/solr/collection1/conf/schema.xml
<fields>
<field name="id" type="string" indexed="true" stored="true" required="true" />
<field name="content" type="text_general" indexed="true" stored="true" required="true" />
<!--<field name="size" type="slong" indexed="true" stored="true" required="true" />-->
<dynamicField name="ignored_*" type="ignored" multiValued="true" indexed="false" stored="false"/>
</fields>
<!--
<fieldtype name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="true"/>
-->
<uniqueKey>id</uniqueKey>
<defaultSearchField>content</defaultSearchField>
<solrQueryParser defaultOperator="AND"/>
# vi /usr/local/tomcat/solr/collection1/conf/solrconfig.xml
<requestHandler name="/update/extract"
startup="lazy"
class="solr.extraction.ExtractingRequestHandler" >
<lst name="defaults">
<str name="fmap.content">content</str>
<str name="fmap.stream_size">size</str>
<str name="lowernames">true</str>
<str name="uprefix">ignored_</str>
<str name="captureAttr">true</str>
</lst>
</requestHandler>
参数解释:
fmap.source=target : 映射规则,将在pdf文件中提取出的字段(source) 映射到solr中的字段(tar)
uprefix : 如果指定了该参数,任何在schema中未定义的字段,都将以该参数指定的值作为字段名前缀
defaultField : 如果没有指定uprefix参数值,且有字段无法在schema中无法检测到,则使用defaultField指定的字段名
captureAttr :(true|false)捕获属性,对Tika XHTML 元素的属性进行索引。
literal:自定义metadata信息,也就是给schema文件中定义的某一个字段指定一个值
linux下提交文档
# curl "http://localhost:8080/solr/update/extract?literal.id=doc5&commit=true" --data-binary @t2.pdf -H 'Content-type:application/pdf'
# curl "http://localhost:8080/solr/update/extract?literal.id=doc5&commit=true" --data-binary @t2.doc -H 'Content-type:application/msword'
# curl "http://localhost:8080/solr/update/extract?literal.id=doc5&commit=true" --data-binary @t2.ppt -H 'Content-type:application/mspowerpoint'
# curl "http://localhost:8080/solr/update/extract?literal.id=doc5&commit=true" --data-binary @t2.xlsx -H 'Content-type:application/msexcel'
# curl "http://localhost:8080/solr/update/extract?literal.id=doc1&commit=true" -F
[email protected]
# curl "http://localhost:8080/solr/update/extract?literal.id=doc1&commit=true" -F
[email protected]
# curl "http://localhost:8080/solr/update/extract?literal.id=doc1&commit=true" -F
[email protected]
七、Solr导入Csv
先查询下solrconfig.xml中有没有配置:
<field name="id" type="string" stored="true" indexed="true"/>
<field name="name" type="string" stored="true" indexed="true"/>
<field name="description" type="text" stored="true" indexed="true"/>
# vi /opt/t2.csv
id;name;description
1;北京;"这个属性值表示是否忽略字段的的规范"
2;上海;"对于有大数据量的情况下还要进行自动"
3;香港;"如果要在做索引的时候指定字段的重要程度"
# vi /usr/local/tomcat/solr/collection1/conf/solrconfig.xml
<requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy">
<lst name="defaults">
<str name="separator">;</str>
<str name="header">true</str>
<str name="skip">publish_date</str>
<str name="encapsulator">"</str>
</lst>
</requestHandler>
说明:
startup="lazy":通过该参数告诉solr在第一次添加时才实例化这个更新处理程序
<str name="separator">;</str> : 通过该参数告诉solr 字段之间是通过";”分隔
<str name="header">true</str>:通过该参数告诉solr在数据项之前含有头信息
<str name="skip">publish_date</str> :通过该参数告诉solr,publish_date 这列数据需要忽略掉
<str name="encapsulator">"</str>:通过该参数告诉solr数据项是通过双引号(")进行封装的
linux下提交文档
# curl "http://localhost:8080/solr/update/extract?literal.id=doc5&commit=true" --data-binary @t2.csv -H 'Content-type:application/csv'
封装好的数据项(此处为双引号),也可以进行拆分,如果过我们将name 字段设为多值,那么在requestHandler里面做一个小的调整,可以对如下文档进行处理:
id;name;isbn;description;publish_date
1;"Solr cookbook;New solr cookbook";ABC123456;"Solr Cookbook";2011-06
在 requestHandler里再添加一项:<str name="split">true</str>
这样设置之后,solr里面会添加一条id为1,name 字段有 Solr cookbook、New solr cookbook 两个值
八、Solr导入二进制文件
schema.xml的字段配置部分如下:
<field name="id" type="string" indexed="true" stored="true" required="true"/>
<field name="author" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="title" type="text" indexed="true" stored="true"/>
<dynamicField name="ignored_*" type="ignored" indexed="false" stored="false" multiValued="true"/>
# vi /usr/local/tomcat/solr/collection1/conf/schema.xml
<requestHandler name="/update/extract" class="org.apache.solr.handler.extraction.ExtractingRequestHandler">
<lst name="defaults">
<str name="lowernames">true</str>
<str name="uprefix">ignored_</str>
<str name="captureAttr">true</str>
</lst>
</requestHandler>
说明:
<str name="lowernames">true</str> :将从二进制文件中抽取的元数据信息字段名都转换为小写
<str name="uprefix">ignored_</str>:如果从二进制文件中抽取出来的字段名在schema.xml中没有定义时,使用的字段名前缀
<str name="captureAttr">true</str>:捕获二进制文件的一些属性信息
linux下提交文档
# curl "http://localhost:8080/solr/update/extract?literal.id=1&commit=true" -F "
[email protected]"
八、Solr通过JDBC从数据库导入
假设数据库(test)中表:执行Sql语句
DROP TABLE IF EXISTS `art`;
CREATE TABLE IF NOT EXISTS `art` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`description` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
INSERT INTO `art` (`id`, `description`) VALUES
(1, '宝兴县灵关中学创建于1958年,其老校区在五年前的汶川地震中'),
(2, '财政部、国家卫计委、人社部、民政部日前联合下发通知,要求各部'),
(3, '该负责人表示,根据业内的消息,窄路掉头主要考验在很窄小的路上'),
(4, '民最担心的而是学费是否会进一步提高。对此,该人士也坦言,现在');
# vi /usr/local/tomcat/solr/collection1/conf/solrconfig.xml
<requestHandler name="/import" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">db-config.xml</str>
</lst>
</requestHandler>
# vi /usr/local/tomcat/solr/collection1/conf/db-config.xml
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"
user="root"
password="root"/>
<document>
<entity name="id"
query="select id,description from art">
</entity>
</document>
</dataConfig>
配置完成之后,重启solr服务,然后执行以下命令进行数据导入
# curl http://localhost:8080/solr/import?command=full-import
/import: 这个命令用于显示当前的状态
/import?command=full-import :使用该参数,表示进行完全导入,默认情况下,在开始导入的时候,会将上次导入的数据进先进行删除,然后再导入,通过另外一个参数,可以改变这种默认行为,clean=false
/dataimport?command=delta-import:使用该参数,表示进行增量导入
/dataimport?command=reload-config: 该命令表示强制对配置进行重新加载
/dataimport?command=abort :该命令表示停止当前正在进行的索引
下面就一些参数稍作解释:
<field column="title" name="title" /> 此处是将从mysql数据库中获取的字段名"title"映射到schema.xml中的title域中(其实此处),其余字段以此类推
九、通过jdbc对对solr进行数据的增量导入
接着上一节的内容,假如我们从mysql中导入进solr中的数据量比较大,所耗时比较长,如果每次都是进行完全导入,肯定是不好的做法,因此可以采取增量导入的方式,solr的相关配置如下所示:
在 schema.xml的域信息定义如下:
<field name="id" type="string" indexed="true" stored="true" required="true"/>
<field name="title" type="text" indexed="true" stored="true"/>
<field name="catname" type="string" stored="true"/>
# vi /usr/local/tomcat/solr/collection1/conf/solrconfig.xml
<requestHandler name="/import" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
# vi /usr/local/tomcat/solr/collection1/conf/db-data-config.xml
<dataConfig>
<dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/blog" user="root" password="admin"/>
<document>
<entity name="article" query="select id,title,catid from article" deltaImportQuery="select id,title,catid from article where id='${dataimporter.delta.id}'" deltaQuery="select id from article where cdate> '${dataimporter.last_index_time}'">
<field column="id" name="id" />
<field column="title" name="title" />
<field column="title" name="suggest"/>
<entity name="category" query="select catname from category where id=${article.catid}">
<field column="catname" name="catname"/>
</entity>
</entity>
</document>
</dataConfig>
与上一节相比,db-data-config.xml 文件的配置有所变化:
在最外层的entity节点里面新增了两个属性节点,deltaImportQuery 与deltaQuery, deltaImportQuery使用deltaQuery返回的文章id作为查询条件,然后进行增量导入。
dataimporter.last_index_time :存储在文件import.properties 中
#Sat Jun 16 19:30:20 CST 2012
last_index_time=2012-06-16 19\:30\:19
article.last_index_time=2012-06-16 19\:30\:19
dataimporter.delta.id:deltaImportQuery 返回的id
十、Solr中实现同义词搜索
在为用户提供搜索服务时,为了提供更好的用户体验,我们需要很好的处理同义词搜索。
例如用户在搜索的关键词中含有"1”,需要将其转为为"一”,这时可以采用以下的方式去实现:
首先,配置schema.xml文件,定义相应的域类型
<fieldtype name="text_search" class="solr.TextField" omitNorms="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldtype>
synonyms.txt:
1 => 一
十一、Solr函数使用之map
map 函数是将将一个字段指定范围内的值进行映射转换为目标值
常见的用法有:
map(x,min,max,target)和map(x,min,max,target,other)两种
例如:
map(x,0,0,1) 在函数参数中的x如果为0时则将其值映射为1,这在处理默认值为0时很有用。
map(x,10,100,1,2) 在函数参数中的x如果落在[10,100]之间,则将x的值映射为1,否则将其值映射为2
使用方法:
一般用作排序
sort=sum(value,map(age,10,10,$x,$y))+asc&x=2&y=3
上面是将age字段值为10,则将其值映射为2,否则为3,然后加上value,然后按照升序排列
sort=sum(value,map(age,10,10,$x,$y))+asc&x=sum(2,some_field*2)&y=3
与上一个例子的意图差不多,只是x值的生成是通过函数实现
通过map函数,对score字段进行影响,然后对score进行排序
http://localhost:8080/solr/loupan/select/?q={!func}map(loupan_id,1004,1004,1,100)&fl=*,score&sort=score+asc,loupan_id+desc
直接在sort的时候使用map进行排序
http://localhost:8080/solr/loupan/select/?q=*:*&fl=*,score&sort=map(loupan_id,1004,1004,1,100)+asc
异常解决
1.SolrException: Error loading class 'solr.VelocityResponseWriter'
vi /usr/local/tomcat/solr/collection1/conf/solrconfig.xml
<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" enable="${solr.velocity.enabled:true}"/>注释或者disabled - enable:false即可
重启Tomcat
2.org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Error opening new searcher
清空索引
# cd /usr/local/tomcat/solr/collection1/data/index
# rm -rf *
重启Tomcat
一、Solr 程序包 的目录结构
l client :包含了一些特定语言调用Solr 的API 客户端程序,目前只有Ruby 可供选择。
l contrib: 更多内容和索引的支持与扩展。
² contrib /analysis-extras:提供了基于大量依赖和字典的加强分析器。
² contrib /clustering:提供了给第三方聚簇实现的插件。
² contrib /dataimporthandler:数据导入工具,可以从数据库,xml文件和http数据源导入。
² contrib /extraction:更多抽象支持包。
² contrib /uima: UIMA 元数据抽象库和使用应该做的配置。
l dist :存放Solr 构建完成正式发布的JAR 文件、WAR 文件和Solr 依赖的JAR 文件。
l docs: 包含Solr的官方说明文档和使用API。
l example :是一个安装好的Jetty 中间件,其中包括一些样本数据和Solr 的配置信息。
² example/etc :Jetty 的配置文件。
² example /example-DIH:数据导入的配置和事例。
² example /exampledocs:post.jar可以用来建立索引。*.xml可以作数据源。
² example /lib: 相关的包,jsp,jetty, servlet有关。
² example /logs: 记录日志,初始状态为空。
² example/multicore :当安装Slormulticore 时,用来放置多个Solr 主目录。
² example/solr :默认安装时一个Solr 的主目录。给出一个例子,展示solr home是什么样,建议新建一个solr实例时,复制这个文件夹下的所有文件。
² example/webapps :Solr 的WAR 文件部署在这里。是一个可运行的例子。
² example /work:工作目录,默认为空。
² example/start.jar: 通过运行start.jar可以使example中的Solr.war在Jetty环境下启动服务。
二、Solr 主目录结构
当Solr启动时,第一件事就是从主目录中读取它的配置。一个运行的Solr 服务其主目录包含了Solr 的配置文件和数据(Lucene 的索引文件)
Solr 的主目录展开后为如下结构:(example/solr )
l bin :建议将集群复制脚本放在这个目录下。
l conf :放置配置文件。
² conf/schema.xml :建立索引的schema 包含了字段类型定义和其相关的分析器。
² conf/solrconfig.xml :这个是Solr 主要的配置文件。
² conf/velocity:以*.vm来进行页面展示。
² conf/xslt :包含了很多xslt 文件,这些文件能将Solr 的XML 的查询结果转换为特定的格式,比如:Atom/RSS 。
l data :放置Lucene 产生的索引数据。
l lib :放置可选的JAR 文件比如对Slor 扩展的插件,这些JAR 文件将会在Solr 启动时加载。
三、post.jar的使用
1. post.jar可以用来添加索引,通过反编译post.jar得到SimplePostTool.java这一个类。
2. 工具默认的参数以D(default)为前缀:
l 请求的url是 -Durl=http://localhost:8983/solr/update。
l 是否提交-Dcommit=yes。
l 数据来源-Ddata=files。
l 数据的文本类型-Dtype=application/xml。
l 请求是否输出到控制台-Dout=no。
3. 数据来源可以来自文件、参数和控制台,指定建立索引的文件和字段及值。
来自文件, 例java-Ddata=files -jar post.jar *.xml,可以省略为java -jar post.jar *.xml (因为是默认-Ddata=files)
来自参数,例:java-Ddata=args -jar post.jar '<delete><id>42</id></delete>'
来自控制台输入,例:java-Ddata=stdin -jar post.jar < hd.xml
solr与zookeeper搭建solrcloud分布式索引服务实例
概述
由于机器台数的问题,本次搭建的是一台zookeeper服务器多台solr服务器的形式。其他知识这里不再啰嗦,可以参与:http://wiki.apache.org/solr/SolrCloud
注:"x"表示实际信息。
预先准备
1.下载solr4.1.0的压缩包:http://labs.mop.com/apache-mirror/lucene/solr/4.1.0/solr-4.1.0.tgz
2.三台机器,假定ip分别为:192.168.0.1,192.168.0.2,192.168.0.3
3.准备好java jdk1.6及以上版本和tomcat6.x及以上版本
搭建服务
A.搭建192.168.0.1服务
- 解压tomcat6.x包,将端口设置为:8081.
- 解压solr-4.1.0.tgz包,将x/solr-4.1.0/example/solr复制到x/tomcat6.x/目录内。将x/solr-4.1.0/example/webapps/solr.war,复制到tomcat的webapps目录内。并修改solr/WEB-INF/web.xml内容:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>x/tomcat6.x/</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
- 修改tomcat6.x/bin目录内的catalina.sh,在头部分添加如下代码:
# JAVA_OPTS (Optional) Java runtime options used when the "start",
# "stop", or "run" command is executed.
JAVA_OPTS="-Dbootstrap_confdir=x/tomcat6.x/solr/collection1/conf -Dcollection.configName=clusterconf -Djetty.port=8081 -Dhost=192.168.0.1 -DzkRun -DzkHost=localhost:9081 -DnumShards=1"
当然这-Djetty.port=8081 -Dhost=192.168.0.1配置也可以在x/tomcat6.x/solr/solr.xml文件设置。
B.搭建192.168.0.2服务
- 复制192.168.0.1的tomcat6.x到本台机器上
- 修改solr/WEB-INF/web.xml内容
- 修改tomcat6.x/bin目录内的catalina.sh,在头部分添加如下代码:
# JAVA_OPTS (Optional) Java runtime options used when the "start",
# "stop", or "run" command is executed.
JAVA_OPTS="-Djetty.port=8082 -DzkHost=192.168.0.1:9081"
C.搭建192.168.0.3服务
- 复制192.168.0.1的tomcat6.x到本台机器上
- 修改solr/WEB-INF/web.xml内容
- 修改tomcat6.x/bin目录内的catalina.sh,在头部分添加如下代码:
# JAVA_OPTS (Optional) Java runtime options used when the "start",
# "stop", or "run" command is executed.
JAVA_OPTS="-Djetty.port=8083 -DzkHost=192.168.0.1:9081"
启动服务
分别启动三台机器的tomcat服务。
查看结果
输入URL:http://192.168.0.1:8081/solr/#/~cloud,查看solr管理后台.
简单应用
在leader节点上创建一些索引数据:
cd exampledocs
java -Durl=http://192.168.0.1:8081/solr/collection1/update -jar post.jar ipod_video.xml
java -Durl=http://192.168.0.1:8081/solr/collection1/update -jar post.jar monitor.xml
java -Durl=http://192.168.0.1:8081/solr/collection1/update -jar post.jar mem.xml
所以Replica节点都同步获得索引数据,输入URL:http://192.168.0.2:8082/solr/collection1/select?q=*:*&wt=xml,可进行测试.