diff --git a/entity-management-common/src/main/java/eu/europeana/entitymanagement/common/config/EntityManagementConfiguration.java b/entity-management-common/src/main/java/eu/europeana/entitymanagement/common/config/EntityManagementConfiguration.java index c0913b94..857aaaaf 100644 --- a/entity-management-common/src/main/java/eu/europeana/entitymanagement/common/config/EntityManagementConfiguration.java +++ b/entity-management-common/src/main/java/eu/europeana/entitymanagement/common/config/EntityManagementConfiguration.java @@ -60,7 +60,13 @@ public class EntityManagementConfiguration implements InitializingBean { @Value("${entitymanagement.solr.pr.url}") private String prSolrUrl; + + @Value("${entitymanagement.solr.pr.zookeeper.url:}") + private String prSolrZookeeperUrl; + @Value("${entitymanagement.solr.pr.collection}") + private String prSolrCollection; + @Value("${europeana.searchapi.urlPrefix}") private String searchApiUrlPrefix; diff --git a/entity-management-tests/src/integration-test/resources/solr-docker/conf/schema.xml b/entity-management-tests/src/integration-test/resources/solr-docker/conf/schema.xml index 9a77f8a6..f9bb3423 100644 --- a/entity-management-tests/src/integration-test/resources/solr-docker/conf/schema.xml +++ b/entity-management-tests/src/integration-test/resources/solr-docker/conf/schema.xml @@ -7,10 +7,7 @@ sortMissingLast="true" /> - + @@ -123,10 +120,6 @@ - - - @@ -273,13 +263,6 @@ stored="true" multiValued="true" /> - - - - - - @@ -458,12 +438,7 @@ stored="true" multiValued="false" /> - - - @@ -481,9 +456,10 @@ stored="true" multiValued="false" /> - - + + + diff --git a/entity-management-web/src/main/java/eu/europeana/entitymanagement/config/SolrConfig.java b/entity-management-web/src/main/java/eu/europeana/entitymanagement/config/SolrConfig.java index d99e132d..7b06ba87 100644 --- a/entity-management-web/src/main/java/eu/europeana/entitymanagement/config/SolrConfig.java +++ b/entity-management-web/src/main/java/eu/europeana/entitymanagement/config/SolrConfig.java @@ -1,7 +1,5 @@ package eu.europeana.entitymanagement.config; -import eu.europeana.entitymanagement.common.config.EntityManagementConfiguration; -import eu.europeana.entitymanagement.common.vocabulary.AppConfigConstants; import java.util.Arrays; import java.util.Optional; import org.apache.commons.lang3.StringUtils; @@ -14,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import eu.europeana.entitymanagement.common.config.EntityManagementConfiguration; +import eu.europeana.entitymanagement.common.vocabulary.AppConfigConstants; @Configuration public class SolrConfig { @@ -28,52 +28,57 @@ public SolrConfig(EntityManagementConfiguration emConfiguration) { @Bean(AppConfigConstants.BEAN_PR_SOLR_CLIENT) public SolrClient pageRankSolrClient() { - logger.info("Configuring pageRank solr client at the url: {}", emConfiguration.getPrSolrUrl()); - return new HttpSolrClient.Builder(emConfiguration.getPrSolrUrl()).build(); + if (StringUtils.isNotBlank(emConfiguration.getPrSolrZookeeperUrl())) { + return initSolrCloudClient(emConfiguration.getPrSolrZookeeperUrl(), emConfiguration.getIndexingSolrTimeoutMillis(), + emConfiguration.getPrSolrCollection()); + } else { + return initSolrClient(emConfiguration.getPrSolrUrl(), emConfiguration.getIndexingSolrTimeoutMillis()); + } } - + @Bean(AppConfigConstants.BEAN_INDEXING_SOLR_CLIENT) public SolrClient indexingSolrClient() { if (StringUtils.isNotBlank(emConfiguration.getIndexingSolrZookeeperUrl())) { - return initSolrCloudClient(); + return initSolrCloudClient(emConfiguration.getIndexingSolrZookeeperUrl(), emConfiguration.getIndexingSolrTimeoutMillis(), + emConfiguration.getIndexingSolrCollection()); } else { - return initSolrClient(); + return initSolrClient(emConfiguration.getIndexingSolrUrl(), emConfiguration.getIndexingSolrTimeoutMillis()); } } - private SolrClient initSolrClient() { + private SolrClient initSolrClient(String solrUrl, int timeoutMillis) { logger.info( - "Configuring indexing solr client at the url: {}", emConfiguration.getIndexingSolrUrl()); + "Configuring solr client at the url: {}", solrUrl); - if (emConfiguration.getIndexingSolrUrl().contains(",")) { + if (solrUrl.contains(",")) { LBHttpSolrClient.Builder builder = new LBHttpSolrClient.Builder(); return builder - .withBaseSolrUrls(emConfiguration.getIndexingSolrUrl().split(",")) - .withConnectionTimeout(emConfiguration.getIndexingSolrTimeoutMillis()) + .withBaseSolrUrls(solrUrl.split(",")) + .withConnectionTimeout(timeoutMillis) .build(); } else { HttpSolrClient.Builder builder = new HttpSolrClient.Builder(); return builder - .withBaseSolrUrl(emConfiguration.getIndexingSolrUrl()) - .withConnectionTimeout(emConfiguration.getIndexingSolrTimeoutMillis()) + .withBaseSolrUrl(solrUrl) + .withConnectionTimeout(timeoutMillis) .build(); } } - private SolrClient initSolrCloudClient() { + private SolrClient initSolrCloudClient(String solrZookeeperUrl, int timeout, String solrCollection) { logger.info( - "Configuring indexing solr client with the zookeperurls: {} and collection: {}", - emConfiguration.getIndexingSolrUrl(), - emConfiguration.getIndexingSolrCollection()); + "Configuring solr client with the zookeperurls: {} and collection: {}", + solrZookeeperUrl, + solrCollection); - String[] solrZookeeperUrls = emConfiguration.getIndexingSolrZookeeperUrl().trim().split(","); + String[] solrZookeeperUrlsList = solrZookeeperUrl.trim().split(","); CloudSolrClient client = - new CloudSolrClient.Builder(Arrays.asList(solrZookeeperUrls), Optional.empty()) - .withConnectionTimeout(emConfiguration.getIndexingSolrTimeoutMillis()) + new CloudSolrClient.Builder(Arrays.asList(solrZookeeperUrlsList), Optional.empty()) + .withConnectionTimeout(timeout) .build(); - client.setDefaultCollection(emConfiguration.getIndexingSolrCollection()); + client.setDefaultCollection(solrCollection); return client; } } diff --git a/entity-management-web/src/main/resources/entitymanagement.properties b/entity-management-web/src/main/resources/entitymanagement.properties index 8a2b5f45..e21bf66a 100644 --- a/entity-management-web/src/main/resources/entitymanagement.properties +++ b/entity-management-web/src/main/resources/entitymanagement.properties @@ -40,6 +40,12 @@ datasources.config=/datasources.xml #string value representing the key used for JWT signature verification europeana.apikey.jwttoken.signaturekey= +#zookeeper url for the page-rank solr (if not present, normal is used) +#entitymanagement.solr.pr.zookeeper.url=localhost:9983 + +#the name of the page-rank solr collection (mandatory when using zookeeper url) +entitymanagement.solr.pr.collection=pagerank1 + #url for the page rank solr #entitymanagement.solr.pr.url= entitymanagement.solr.pr.url=http://annotation-entity-test.eanadev.org:9393/solr/pagerank1