Solr4.3和5.3版本区别
1.SolrJ调用的区别
1.1 solrj4.3使用HttpSolrServer,5.3使用 HttpSolrClient
SolrJ4.3创建方式:
public static SolrServer getSolrServer() {
try {
if (solrServer == null) {
String url = “http://127.0.0.1:8080/solr”
HttpSolrServer server = new HttpSolrServer();
server.setSoTimeout(1000);
server.setConnectionTimeout(100);
server.setDefaultMaxConnectionsPerHost(100);
server.setMaxTotalConnections(100);
server.setFollowRedirects(false);
server.setAllowCompression(true);
server.setMaxRetries(1);
}
} catch (Exception e) {
e.printStackTrace();
}
return solrServer;
}
5.3创建方式:
public static SolrClient getSolrClent(){
try {
if (solrClient == null) {
String url = "http://127.0.0.1:8080/solr";
solrClient = new HttpSolrClient(url);
solrClient.setDefaultMaxConnectionsPerHost(100);
solrClient.setFollowRedirects(true);
solrClient.setUseMultiPartPost(true);
solrClient.setSoTimeout(1000);
solrClient.setConnectionTimeout(1000);
solrClient.setMaxTotalConnections(100);
solrClient.setAllowCompression(true);
}
} catch (Exception e) {
e.printStackTrace();
}
return solrClient;
}
2 solrconfig.xml文件的区别
2.1 requestHandler配置检索建议的实现类不同
4.3版本:
<requestHandler name="/suggest" class="solr.SearchHandler" >
5.3版本同时也兼容4.3版本的solr.SearchHandler:
<requestHandler class="org.apache.solr.handler.component.SearchHandler"
name="/suggest">
2.2 luceneMatchVersion 版本号不同
4.3版本的值:
<luceneMatchVersion>LUCENE_43</luceneMatchVersion>
5.3版本的值:
<luceneMatchVersion>5.3.1</luceneMatchVersion>
3 solr.xml文件的区别
4.3版本:
<solr persistent="true">
<cores adminPath="/admin/cores"
defaultCoreName="core1"
host="${host:}"
hostPort="${jetty.port:8983}"
hostContext="${hostContext:solr}"
zkClientTimeout="${zkClientTimeout:15000}">
<core name="core1" instanceDir="core1" />
</cores>
</solr>
5.3版本:
<solr>
<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>
</solr>
3.1 solr5.3版本solr.xml不在支持 persistent持久性的属性
在solr4.3的solr.xml 文件配置有persistent 的属性
1. Persistent="false" 指明运行时的任何修改我们不做保存。
2. Persistent="ture" 保存从启动起的一些改动,在index策略是完成建index到一个纯净的core中然后交换到活动core。
3.2 solr5.3版本solr.xml使用<solrcoloud>代替<cores>标签
1. 在solr4.3配置多个core的配置项在solr.xml文件完成,如图创建core1和core2配置:
<solr persistent="true">
<cores adminPath="/admin/cores"
defaultCoreName="core1"
host="${host:}"
hostPort="${jetty.port:8983}"
hostContext="${hostContext:solr}"
zkClientTimeout="${zkClientTimeout:15000}"
>
<core name="core1" instanceDir="core1" loadOnStartup="true" transient="false"/>
<core name="core2" instanceDir="core2" loadOnStartup="true" transient="false"/>
</cores>
</solr>
2. 在solr5.3中则在core1和core2的文件夹下各创建一个core.properties文件
4 solr5.3增加core.properties文件配置core的属性
下面来具体说说core.properties的配置:
name:core的名称,必填参数
config:用于指定solrconfig.xml配置文件的文件名,默认值是solrconfig.xml
dataDir:指定用于存放lucene索引和log日志文件的目录路径,该路径是相对于core根目录(在单core模式下,就直接是相对于solr_home了),默认值是当前core目录下的data
schema: 即用来配置你的schema.xml配置文件的文件名的,schema.xml配置文件必须存放在当前core目录下的conf目录下
coreNodeName: 它允许对core命名。这个名字可以在之后你需要替换一个自动生成的名字的时候使用。使用相同的coreNodeName指定一个新的机器,那么它会取代原有的SolrCore