Project

General

Profile

« Previous | Next » 

Revision 54410

it must work with solr4.9

View differences:

modules/dnet-index-solr-client/trunk/src/main/java/eu/dnetlib/functionality/index/client/clients/solr/SolrIndexClient.java
6 6
import java.util.List;
7 7
import java.util.Map;
8 8

  
9
import eu.dnetlib.functionality.cql.CqlValueTransformerMap;
10
import org.apache.commons.logging.Log;
11
import org.apache.commons.logging.LogFactory;
12
import org.apache.solr.client.solrj.SolrServer;
13
import org.apache.solr.client.solrj.SolrServerException;
14
import org.apache.solr.client.solrj.impl.CloudSolrServer;
15
import org.apache.solr.client.solrj.request.LukeRequest;
16
import org.apache.solr.client.solrj.response.LukeResponse;
17
import org.apache.solr.client.solrj.response.LukeResponse.FieldInfo;
18
import org.apache.solr.client.solrj.response.QueryResponse;
19

  
9 20
import com.google.common.collect.BiMap;
10 21
import com.google.common.collect.Maps;
22

  
11 23
import eu.dnetlib.data.provision.index.rmi.BrowsingRow;
12 24
import eu.dnetlib.data.provision.index.rmi.GroupResult;
13 25
import eu.dnetlib.data.provision.index.rmi.IndexServiceException;
14
import eu.dnetlib.functionality.cql.CqlValueTransformerMap;
15 26
import eu.dnetlib.functionality.index.client.AbstractIndexClient;
16 27
import eu.dnetlib.functionality.index.client.IndexClient;
17 28
import eu.dnetlib.functionality.index.client.IndexClientException;
18 29
import eu.dnetlib.functionality.index.client.response.BrowseEntry;
19 30
import eu.dnetlib.functionality.index.client.response.BrowseValueEntry;
20 31
import eu.dnetlib.functionality.index.client.response.LookupResponse;
32

  
21 33
import eu.dnetlib.functionality.index.model.Any.ValueType;
22
import eu.dnetlib.functionality.index.query.*;
34
import eu.dnetlib.functionality.index.query.IndexQueryFactory;
35
import eu.dnetlib.functionality.index.query.QueryLanguage;
36
import eu.dnetlib.functionality.index.query.QueryResponseFactory;
37
import eu.dnetlib.functionality.index.query.QueryResponseParser;
38
import eu.dnetlib.functionality.index.query.SolrIndexQuery;
39
import eu.dnetlib.functionality.index.query.SolrIndexQueryFactory;
40
import eu.dnetlib.functionality.index.query.SolrIndexQueryResponse;
23 41
import eu.dnetlib.functionality.index.solr.cql.SolrTypeBasedCqlValueTransformerMapFactory;
24 42
import eu.dnetlib.functionality.index.utils.MetadataReference;
25
import org.apache.commons.logging.Log;
26
import org.apache.commons.logging.LogFactory;
27
import org.apache.solr.client.solrj.SolrClient;
28
import org.apache.solr.client.solrj.SolrServerException;
29
import org.apache.solr.client.solrj.impl.CloudSolrClient;
30
import org.apache.solr.client.solrj.request.LukeRequest;
31
import org.apache.solr.client.solrj.response.LukeResponse;
32
import org.apache.solr.client.solrj.response.LukeResponse.FieldInfo;
33
import org.apache.solr.client.solrj.response.QueryResponse;
34 43

  
35 44
/**
36 45
 * The Class SolrIndexClient.
37 46
 */
38 47
public class SolrIndexClient extends AbstractIndexClient implements IndexClient {
39 48

  
40
	/** The client. */
41
	private CloudSolrClient client;
49
	/** The server. */
50
	private CloudSolrServer server;
42 51

  
43 52
	private SolrIndexQueryFactory solrIndexQueryFactory;
44 53

  
......
92 101
			String tquery = translatedQuery.getQuery();
93 102
			translatedQuery.setQueryLimit(0);
94 103

  
95
			SolrIndexQueryResponse rsp = new SolrIndexQueryResponse(client.query(translatedQuery));
104
			SolrIndexQueryResponse rsp = new SolrIndexQueryResponse(server.query(translatedQuery));
96 105
			QueryResponseParser responseParser = queryResponseFactory.getQueryResponseParser(rsp, mdRef);
97 106
			long total = responseParser.getNumFound();
98
			client.deleteByQuery(tquery);
99
			client.commit();
107
			server.deleteByQuery(tquery);
108
			server.commit();
100 109
			return total;
101 110
		} catch (Exception e) {
102 111
			throw new IndexClientException("unable to run delete by query: " + query, e);
......
165 174
			final MetadataReference mdRef,
166 175
			final List<String> browseFields) throws IndexClientException {
167 176
		try {
168
			SolrIndexQueryResponse response = new SolrIndexQueryResponse(client.query(query));
177
			SolrIndexQueryResponse response = new SolrIndexQueryResponse(server.query(query));
169 178
			QueryResponseParser responseParser = queryResponseFactory.getQueryResponseParser(response, mdRef);
170 179
			List<BrowsingRow> results = responseParser.getBrowsingResults();
171 180
			List<BrowseEntry> out = convertBrowseEntry(browseFields, results, responseParser.getAliases());
172 181
			return out;
173
		} catch (SolrServerException | IOException e) {
182
		} catch (SolrServerException e) {
174 183
			throw new IndexClientException("Error on executing a query " + originalQuery, e);
175 184
		}
176 185
	}
......
189 198
	}
190 199

  
191 200
	/**
192
	 * Gets the client.
201
	 * Gets the server.
193 202
	 *
194
	 * @return the client
203
	 * @return the server
195 204
	 * @throws IndexClientException
196 205
	 *             the index client exception
197 206
	 */
198
	public SolrClient getClient() throws IndexClientException {
199
		if (this.client == null) {
207
	public SolrServer getServer() throws IndexClientException {
208
		if (this.server == null) {
200 209
			String url = getUrl();
201 210
			log.debug("create new Client " + url);
202
			client = new CloudSolrClient.Builder()
203
					.withZkHost(url)
204
					.build();
205
			client.setDefaultCollection(String.format("%s-%s-%s", getFormat(), getLayout(), getInterpretation()));
211
			server = new CloudSolrServer(url);
212
			server.setDefaultCollection(String.format("%s-%s-%s", getFormat(), getLayout(), getInterpretation()));
206 213
			try {
207
				client.ping();
214
				server.ping();
208 215
			} catch (Exception e) {
209 216
				throw new IndexClientException("oops something went wrong", e);
210 217
			}
211 218
		}
212
		return client;
219
		return server;
213 220
	}
214 221

  
215 222
	/**
216
	 * Sets the client.
223
	 * Sets the server.
217 224
	 *
218
	 * @param client
219
	 *            the client
225
	 * @param server
226
	 *            the server
220 227
	 */
221
	public void setClient(final CloudSolrClient client) {
222
		this.client = client;
228
	public void setServer(final CloudSolrServer server) {
229
		this.server = server;
223 230
	}
224 231

  
225 232
	@Override
......
236 243
		}
237 244

  
238 245
		try {
239
			SolrIndexQueryResponse response = new SolrIndexQueryResponse(client.query(translatedQuery));
246
			SolrIndexQueryResponse response = new SolrIndexQueryResponse(server.query(translatedQuery));
240 247
			QueryResponseParser responseParser = queryResponseFactory.getQueryResponseParser(response, mdRef);
241 248

  
242 249
			return new LookupResponse(responseParser);
243
		} catch (SolrServerException | IOException e) {
250
		} catch (SolrServerException e) {
244 251
			throw new IndexClientException("Error on executing a query " + query, e);
245 252
		}
246 253

  
......
265 272
	public void stop() throws IndexClientException {
266 273
		try {
267 274
			log.debug("shutdown client: " + serviceProperties.get(ZK_ADDRESS));
268
			client.close();
275
			server.shutdown();
269 276
		} catch (Throwable e) {
270 277
			throw new IndexClientException(e);
271 278
		}
......
319 326
	}
320 327

  
321 328
	private Map<String, ValueType> readFieldNamesAndTypes(final String coreName) throws SolrServerException, IOException, IndexClientException {
322
		// final SolrServer client = cloudServer.getSolrServer(coreName);
329
		// final SolrServer server = cloudServer.getSolrServer(coreName);
323 330
		final LukeRequest request = new LukeRequest();
324 331
		request.setShowSchema(true);
325 332

  
326 333
		// cloudServer.setDefaultCollection(coreName);
327 334
		request.setNumTerms(0);
328
		final LukeResponse response = request.process(getClient());
335
		final LukeResponse response = request.process(getServer());
329 336
		final Map<String, FieldInfo> fieldInfos = response.getFieldInfo();
330 337
		final Map<String, LukeResponse.FieldTypeInfo> fieldTypeInfos = response.getFieldTypeInfo();
331 338
		final Map<String, ValueType> result = Maps.newHashMap();
modules/dnet-index-solr-client/trunk/pom.xml
18 18
		<dependency>
19 19
			<groupId>eu.dnetlib</groupId>
20 20
			<artifactId>dnet-index-client</artifactId>
21
			<version>[2.0.0,3.0.0)</version>
21
			<version>[2.3.2-SNAPSHOT]</version>
22
			<exclusions>
23
				<exclusion>
24
					<groupId>eu.dnetlib</groupId>
25
					<artifactId>dnet-index-solr-common</artifactId>
26
				</exclusion>
27
			</exclusions>
22 28
		</dependency>
23 29
		<dependency>
24 30
			<groupId>eu.dnetlib</groupId>
25 31
			<artifactId>dnet-index-solr-common</artifactId>
26
			<version>[1.1.0,2.0.0)</version>
32
			<version>[1.1.0,1.4.0-SNAPSHOT)</version>
27 33
		</dependency>
28 34
		<dependency>
29 35
			<groupId>junit</groupId>

Also available in: Unified diff