/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library 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 2.1 of the License, or (at your option)
* any later version.
*
* This library 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.
*/
package com.liferay.portal.search.solr.internal;
import com.liferay.portal.kernel.search.IndexSearcher;
import com.liferay.portal.kernel.search.IndexWriter;
import com.liferay.portal.search.solr.connection.SolrClientManager;
import com.liferay.portal.search.solr.connection.TestSolrClientManager;
import com.liferay.portal.search.solr.document.SolrUpdateDocumentCommand;
import com.liferay.portal.search.solr.internal.document.DefaultSolrDocumentFactory;
import com.liferay.portal.search.solr.internal.facet.DefaultFacetProcessor;
import com.liferay.portal.search.solr.internal.filter.BooleanFilterTranslatorImpl;
import com.liferay.portal.search.solr.internal.filter.DateRangeTermFilterTranslatorImpl;
import com.liferay.portal.search.solr.internal.filter.ExistsFilterTranslatorImpl;
import com.liferay.portal.search.solr.internal.filter.GeoBoundingBoxFilterTranslatorImpl;
import com.liferay.portal.search.solr.internal.filter.GeoDistanceFilterTranslatorImpl;
import com.liferay.portal.search.solr.internal.filter.GeoDistanceRangeFilterTranslatorImpl;
import com.liferay.portal.search.solr.internal.filter.GeoPolygonFilterTranslatorImpl;
import com.liferay.portal.search.solr.internal.filter.MissingFilterTranslatorImpl;
import com.liferay.portal.search.solr.internal.filter.PrefixFilterTranslatorImpl;
import com.liferay.portal.search.solr.internal.filter.QueryFilterTranslatorImpl;
import com.liferay.portal.search.solr.internal.filter.RangeTermFilterTranslatorImpl;
import com.liferay.portal.search.solr.internal.filter.SolrFilterTranslator;
import com.liferay.portal.search.solr.internal.filter.TermFilterTranslatorImpl;
import com.liferay.portal.search.solr.internal.filter.TermsFilterTranslatorImpl;
import com.liferay.portal.search.solr.internal.groupby.DefaultGroupByTranslator;
import com.liferay.portal.search.solr.internal.query.BooleanQueryTranslatorImpl;
import com.liferay.portal.search.solr.internal.query.DisMaxQueryTranslatorImpl;
import com.liferay.portal.search.solr.internal.query.FuzzyQueryTranslatorImpl;
import com.liferay.portal.search.solr.internal.query.MatchAllQueryTranslatorImpl;
import com.liferay.portal.search.solr.internal.query.MatchQueryTranslatorImpl;
import com.liferay.portal.search.solr.internal.query.MoreLikeThisQueryTranslatorImpl;
import com.liferay.portal.search.solr.internal.query.MultiMatchQueryTranslatorImpl;
import com.liferay.portal.search.solr.internal.query.NestedQueryTranslatorImpl;
import com.liferay.portal.search.solr.internal.query.SolrQueryTranslator;
import com.liferay.portal.search.solr.internal.query.StringQueryTranslatorImpl;
import com.liferay.portal.search.solr.internal.query.TermQueryTranslatorImpl;
import com.liferay.portal.search.solr.internal.query.TermRangeQueryTranslatorImpl;
import com.liferay.portal.search.solr.internal.query.WildcardQueryTranslatorImpl;
import com.liferay.portal.search.solr.internal.stats.DefaultStatsTranslator;
import com.liferay.portal.search.test.util.indexing.IndexingFixture;
import java.util.HashMap;
import java.util.Map;
/**
* @author Miguel Angelo Caldas Gallindo
* @author André de Oliveira
*/
public class SolrIndexingFixture implements IndexingFixture {
public SolrIndexingFixture() {
_properties = createSolrConfigurationProperties();
}
@Override
public IndexSearcher getIndexSearcher() {
return _indexSearcher;
}
@Override
public IndexWriter getIndexWriter() {
return _indexWriter;
}
@Override
public boolean isSearchEngineAvailable() {
return SolrUnitTestRequirements.isSolrExternallyStartedByDeveloper();
}
@Override
public void setUp() throws Exception {
SolrClientManager solrClientManager = new TestSolrClientManager(
_properties);
_indexSearcher = createIndexSearcher(solrClientManager);
_indexWriter = createIndexWriter(solrClientManager);
}
@Override
public void tearDown() throws Exception {
}
protected static SolrFilterTranslator createSolrFilterTranslator() {
return new SolrFilterTranslator() {
{
setBooleanQueryTranslator(new BooleanFilterTranslatorImpl());
setDateRangeTermFilterTranslator(
new DateRangeTermFilterTranslatorImpl());
setExistsFilterTranslator(new ExistsFilterTranslatorImpl());
setGeoBoundingBoxFilterTranslator(
new GeoBoundingBoxFilterTranslatorImpl());
setGeoDistanceFilterTranslator(
new GeoDistanceFilterTranslatorImpl());
setGeoDistanceRangeFilterTranslator(
new GeoDistanceRangeFilterTranslatorImpl());
setGeoPolygonFilterTranslator(
new GeoPolygonFilterTranslatorImpl());
setMissingFilterTranslator(new MissingFilterTranslatorImpl());
setPrefixFilterTranslator(new PrefixFilterTranslatorImpl());
setQueryFilterTranslator(new QueryFilterTranslatorImpl());
setRangeTermFilterTranslator(
new RangeTermFilterTranslatorImpl());
setTermFilterTranslator(new TermFilterTranslatorImpl());
setTermsFilterTranslator(new TermsFilterTranslatorImpl());
}
};
}
protected static SolrQueryTranslator createSolrQueryTranslator() {
return new SolrQueryTranslator() {
{
setBooleanQueryTranslator(new BooleanQueryTranslatorImpl());
setDisMaxQueryTranslator(new DisMaxQueryTranslatorImpl());
setFuzzyQueryTranslator(new FuzzyQueryTranslatorImpl());
setMatchAllQueryTranslator(new MatchAllQueryTranslatorImpl());
setMatchQueryTranslator(new MatchQueryTranslatorImpl());
setMoreLikeThisQueryTranslator(
new MoreLikeThisQueryTranslatorImpl());
setMultiMatchQueryTranslator(
new MultiMatchQueryTranslatorImpl());
setNestedQueryTranslator(new NestedQueryTranslatorImpl());
setStringQueryTranslator(new StringQueryTranslatorImpl());
setTermQueryTranslator(new TermQueryTranslatorImpl());
setTermRangeQueryTranslator(new TermRangeQueryTranslatorImpl());
setWildcardQueryTranslator(new WildcardQueryTranslatorImpl());
}
};
}
protected IndexSearcher createIndexSearcher(
final SolrClientManager solrClientManager) {
return new SolrIndexSearcher() {
{
setFacetProcessor(new DefaultFacetProcessor());
setFilterTranslator(createSolrFilterTranslator());
setGroupByTranslator(new DefaultGroupByTranslator());
setQueryTranslator(createSolrQueryTranslator());
setSolrClientManager(solrClientManager);
setStatsTranslator(new DefaultStatsTranslator());
activate(_properties);
}
};
}
protected IndexWriter createIndexWriter(
final SolrClientManager solrClientManager) {
final SolrUpdateDocumentCommand updateDocumentCommand =
new SolrUpdateDocumentCommandImpl() {
{
setSolrClientManager(solrClientManager);
setSolrDocumentFactory(new DefaultSolrDocumentFactory());
}
};
return new SolrIndexWriter() {
{
setSolrClientManager(solrClientManager);
setSolrUpdateDocumentCommand(updateDocumentCommand);
}
};
}
protected Map<String, Object> createSolrConfigurationProperties() {
Map<String, Object> properties = new HashMap<>();
properties.put("logExceptionsOnly", false);
properties.put("readURL", "http://localhost:8983/solr/liferay");
properties.put("writeURL", "http://localhost:8983/solr/liferay");
return properties;
}
private IndexSearcher _indexSearcher;
private IndexWriter _indexWriter;
private final Map<String, Object> _properties;
}