ALF-9079: RSOLR 019: Lucene to SOLR switchover administration

- make solr base URL configurable

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29092 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Andrew Hind
2011-07-15 19:31:26 +00:00
parent 7aff26a021
commit c4a82b18c1
7 changed files with 97 additions and 9 deletions

View File

@@ -30,7 +30,14 @@
</bean> </bean>
<bean id="search.lucene.alfresco" class="org.alfresco.repo.search.impl.solr.SolrAlfrescoFTSQueryLanguage" > <bean id="search.abstract.query.language" abstract="true">
<property name="baseUrl">
<value>${solr.base.url}</value>
</property>
</bean>
<bean id="search.lucene.alfresco" class="org.alfresco.repo.search.impl.solr.SolrAlfrescoFTSQueryLanguage"
parent="search.abstract.query.language" >
<property name="nodeDAO"> <property name="nodeDAO">
<ref bean="nodeDAO" /> <ref bean="nodeDAO" />
</property> </property>
@@ -49,7 +56,8 @@
<!-- TODO: XPATH --> <!-- TODO: XPATH -->
<bean id="search.lucene.fts.alfresco" class="org.alfresco.repo.search.impl.solr.SolrAlfrescoFTSQueryLanguage" > <bean id="search.lucene.fts.alfresco" class="org.alfresco.repo.search.impl.solr.SolrAlfrescoFTSQueryLanguage"
parent="search.abstract.query.language" >
<property name="nodeDAO"> <property name="nodeDAO">
<ref bean="nodeDAO" /> <ref bean="nodeDAO" />
</property> </property>
@@ -66,7 +74,8 @@
</property> </property>
</bean> </bean>
<bean id="search.solr.fts.alfresco" class="org.alfresco.repo.search.impl.solr.SolrAlfrescoFTSQueryLanguage" > <bean id="search.solr.fts.alfresco" class="org.alfresco.repo.search.impl.solr.SolrAlfrescoFTSQueryLanguage"
parent="search.abstract.query.language" >
<property name="nodeDAO"> <property name="nodeDAO">
<ref bean="nodeDAO" /> <ref bean="nodeDAO" />
</property> </property>
@@ -80,7 +89,8 @@
</property> </property>
</bean> </bean>
<bean id="search.solr.cmis" class="org.alfresco.repo.search.impl.solr.SolrCMISQueryLanguage" > <bean id="search.solr.cmis" class="org.alfresco.repo.search.impl.solr.SolrCMISQueryLanguage"
parent="search.abstract.query.language" >
<property name="nodeDAO"> <property name="nodeDAO">
<ref bean="nodeDAO" /> <ref bean="nodeDAO" />
</property> </property>
@@ -121,6 +131,9 @@
<property name="queryRegister"> <property name="queryRegister">
<ref bean="search.queryRegisterComponent" /> <ref bean="search.queryRegisterComponent" />
</property> </property>
<property name="baseUrl">
<value>${solr.base.url}</value>
</property>
</bean> </bean>
<alias name="search.indexerAndSearcherFactory" alias="search.admLuceneIndexerAndSearcherFactory"/> <alias name="search.indexerAndSearcherFactory" alias="search.admLuceneIndexerAndSearcherFactory"/>

View File

@@ -0,0 +1 @@
solr.base.url=http://localhost:8080/solr

View File

@@ -198,6 +198,8 @@ public abstract class AbstractLuceneIndexerAndSearcherFactory extends AbstractIn
private ConfigurableApplicationContext applicationContext; private ConfigurableApplicationContext applicationContext;
private boolean contentIndexingEnabled = true;
/** /**
* Private constructor for the singleton TODO: FIt in with IOC * Private constructor for the singleton TODO: FIt in with IOC
*/ */
@@ -1974,6 +1976,22 @@ public abstract class AbstractLuceneIndexerAndSearcherFactory extends AbstractIn
this.writerRamBufferSizeMb = writerRamBufferSizeMb; this.writerRamBufferSizeMb = writerRamBufferSizeMb;
} }
@Override
public boolean isContentIndexingEnabled()
{
return contentIndexingEnabled;
}
@Override
public void setContentIndexingEnabled(boolean contentIndexingEnabled)
{
this.contentIndexingEnabled = contentIndexingEnabled;
}
protected LuceneQueryLanguageSPI getQueryLanguage(String name) protected LuceneQueryLanguageSPI getQueryLanguage(String name)
{ {
return getQueryLanguages().get(name); return getQueryLanguages().get(name);

View File

@@ -0,0 +1,42 @@
/*
* Copyright (C) 2005-2010 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
package org.alfresco.repo.search.impl.solr;
import org.alfresco.repo.search.impl.lucene.AbstractLuceneQueryLanguage;
/**
* @author Andy
*
*/
public abstract class AbstractSolrQueryLanguage extends AbstractLuceneQueryLanguage
{
private String baseUrl;
public String getBaseUrl()
{
return baseUrl;
}
public void setBaseUrl(String baseUrl)
{
this.baseUrl = baseUrl;
}
}

View File

@@ -61,7 +61,7 @@ import org.springframework.extensions.surf.util.I18NUtil;
/** /**
* @author Andy * @author Andy
*/ */
public class SolrAlfrescoFTSQueryLanguage extends AbstractLuceneQueryLanguage public class SolrAlfrescoFTSQueryLanguage extends AbstractSolrQueryLanguage
{ {
static Log s_logger = LogFactory.getLog(SolrAlfrescoFTSQueryLanguage.class); static Log s_logger = LogFactory.getLog(SolrAlfrescoFTSQueryLanguage.class);
@@ -104,7 +104,9 @@ public class SolrAlfrescoFTSQueryLanguage extends AbstractLuceneQueryLanguage
httpClient.getParams().setBooleanParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, true); httpClient.getParams().setBooleanParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, true);
httpClient.getState().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials("admin", "admin")); httpClient.getState().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials("admin", "admin"));
StringBuilder url = new StringBuilder("http://localhost:8080/solr/alfresco/afts"); StringBuilder url = new StringBuilder();
url.append(getBaseUrl());
url.append("/alfresco/afts");
//duplicate the query in the URL //duplicate the query in the URL
url.append("?q="); url.append("?q=");
URLCodec encoder = new URLCodec(); URLCodec encoder = new URLCodec();

View File

@@ -58,7 +58,7 @@ import org.springframework.extensions.surf.util.I18NUtil;
/** /**
* @author Andy * @author Andy
*/ */
public class SolrCMISQueryLanguage extends AbstractLuceneQueryLanguage public class SolrCMISQueryLanguage extends AbstractSolrQueryLanguage
{ {
static Log s_logger = LogFactory.getLog(SolrCMISQueryLanguage.class); static Log s_logger = LogFactory.getLog(SolrCMISQueryLanguage.class);
@@ -103,8 +103,9 @@ public class SolrCMISQueryLanguage extends AbstractLuceneQueryLanguage
httpClient.getParams().setBooleanParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, true); httpClient.getParams().setBooleanParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, true);
httpClient.getState().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials("admin", "admin")); httpClient.getState().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials("admin", "admin"));
StringBuilder url = new StringBuilder("http://localhost:8080/solr/alfresco/cmis"); StringBuilder url = new StringBuilder();
// duplicate the query in the URL url.append(getBaseUrl());
url.append("/alfresco/cmis");
url.append("?q="); url.append("?q=");
URLCodec encoder = new URLCodec(); URLCodec encoder = new URLCodec();
url.append(encoder.encode(searchParameters.getQuery(), "UTF-8")); url.append(encoder.encode(searchParameters.getQuery(), "UTF-8"));

View File

@@ -44,6 +44,7 @@ public class SolrIndexerAndSearcherFactory extends AbstractIndexerAndSearcher
private NodeService nodeService; private NodeService nodeService;
private QueryRegisterComponent queryRegister; private QueryRegisterComponent queryRegister;
private TenantService tenantService; private TenantService tenantService;
private String baseUrl;
public DictionaryService getDictionaryService() public DictionaryService getDictionaryService()
{ {
@@ -95,6 +96,16 @@ public class SolrIndexerAndSearcherFactory extends AbstractIndexerAndSearcher
this.tenantService = tenantService; this.tenantService = tenantService;
} }
public String getBaseUrl()
{
return baseUrl;
}
public void setBaseUrl(String baseUrl)
{
this.baseUrl = baseUrl;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see org.alfresco.repo.search.IndexerAndSearcher#getIndexer(org.alfresco.service.cmr.repository.StoreRef) * @see org.alfresco.repo.search.IndexerAndSearcher#getIndexer(org.alfresco.service.cmr.repository.StoreRef)
*/ */