Skip to content

Commit 7b5e73a

Browse files
committed
more solr capabilities; pulling in pysolr
1 parent e4d6a90 commit 7b5e73a

File tree

5 files changed

+80
-8
lines changed

5 files changed

+80
-8
lines changed

examples/retrieve_and_rank_v1.py

+27-7
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,41 @@
55
retrieve_and_rank = RetrieveAndRank(username='YOUR SERVICE USERNAME',
66
password='YOUR SERVICE PASSWORD')
77

8-
rankers = retrieve_and_rank.list_rankers()
9-
print(json.dumps(rankers, indent=2))
8+
# Solr clusters
9+
10+
solr_clusters = retrieve_and_rank.list_solr_clusters()
11+
print(json.dumps(solr_clusters, indent=2))
12+
13+
# created_cluster = retrieve_and_rank.create_solr_cluster(cluster_name='Test Cluster', cluster_size='1')
14+
# print(json.dumps(created_cluster, indent=2))
15+
16+
solr_cluster_id = 'sc31a30e84_9094_4af2_93af_a8751257d4cc'
17+
18+
status = retrieve_and_rank.get_solr_cluster_status(solr_cluster_id=solr_cluster_id)
19+
print(json.dumps(status, indent=2))
20+
21+
# Solr cluster config
22+
with open('../resources/solr_config.zip', 'rb') as config:
23+
config_status = retrieve_and_rank.create_config(solr_cluster_id, 'test config', config)
24+
print(json.dumps(config_status, indent=2))
25+
26+
# Rankers
27+
28+
# rankers = retrieve_and_rank.list_rankers()
29+
# print(json.dumps(rankers, indent=2))
1030

1131
# create a ranker
1232
# with open('../resources/ranker_training_data.csv', 'rb') as training_data:
1333
# print(json.dumps(retrieve_and_rank.create_ranker(training_data=training_data, name='Ranker Test'), indent=2))
1434

1535
# replace YOUR RANKER ID
16-
status = retrieve_and_rank.get_ranker_status('42AF7Ex10-rank-47')
17-
print(json.dumps(status, indent=2))
36+
# status = retrieve_and_rank.get_ranker_status('42AF7Ex10-rank-47')
37+
# print(json.dumps(status, indent=2))
1838

1939
# delete_results = retrieve_and_rank.delete_ranker('YOUR RANKER ID')
2040
# print(json.dumps(delete_results))
2141

2242
# replace '42AF7Ex10-rank-47' with your ranker_id
23-
with open('../resources/ranker_answer_data.csv', 'rb') as answer_data:
24-
ranker_results = retrieve_and_rank.rank('42AF7Ex10-rank-47', answer_data)
25-
print(json.dumps(ranker_results, indent=2))
43+
# with open('../resources/ranker_answer_data.csv', 'rb') as answer_data:
44+
# ranker_results = retrieve_and_rank.rank('42AF7Ex10-rank-47', answer_data)
45+
# print(json.dumps(ranker_results, indent=2))

requirements.txt

+1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
requests>=2.0,<3.0
2+
pysolr>=3.3,<4.0

resources/solr_config.zip

23.3 KB
Binary file not shown.

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def run_tests(self):
5555
version=__version__,
5656
description='Client library to use the IBM Watson Services',
5757
license='Apache 2.0',
58-
install_requires=['requests>=2.0, <3.0'],
58+
install_requires=['requests>=2.0, <3.0', 'pysolr>= 3.3, <4.0'],
5959
tests_require=['responses', 'pytest', 'python_dotenv'],
6060
cmdclass={'test': PyTest},
6161
author='Jeffrey Stylos',

watson_developer_cloud/retrieve_and_rank_v1.py

+51
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"""
1919

2020
import json
21+
import pysolr
2122
from watson_developer_cloud.watson_developer_cloud_service import WatsonDeveloperCloudService
2223

2324

@@ -28,6 +29,56 @@ def __init__(self, url=default_url, username=None, password=None, use_vcap_servi
2829
WatsonDeveloperCloudService.__init__(self, 'retrieve_and_rank', url, username, password,
2930
use_vcap_services)
3031

32+
def list_solr_clusters(self):
33+
return self.request(method='GET', url='/v1/solr_clusters', accept_json=True)
34+
35+
def create_solr_cluster(self, cluster_name=None, cluster_size=None):
36+
if cluster_size and isinstance(cluster_size, (int, long)):
37+
cluster_size = str(cluster_size)
38+
params = {'cluster_name': cluster_name, 'cluster_size': cluster_size}
39+
return self.request(method='POST', url='/v1/solr_clusters', accept_json=True, json=params)
40+
41+
def delete_solr_cluster(self, solr_cluster_id):
42+
return self.request(method='DELETE', url='/v1/solr_clusters/{}'.format(solr_cluster_id), accept_json=True)
43+
44+
def get_solr_cluster_status(self, solr_cluster_id):
45+
return self.request(method='GET', url='/v1/solr_clusters/{}'.format(solr_cluster_id), accept_json=True)
46+
47+
def list_configs(self, solr_cluster_id):
48+
return self.request(method='GET', url='/v1/solr_clusters/{}/config'.format(solr_cluster_id), accept_json=True)
49+
50+
# Need to test
51+
def create_config(self, solr_cluster_id, config_name, config):
52+
return self.request(method='POST', url='/v1/solr_clusters/{}/config/{}'.format(solr_cluster_id, config_name),
53+
files={'body': config}, accept_json=True)
54+
55+
def delete_config(self, solr_cluster_id, config_name):
56+
return self.request(method='DELETE', url='/v1/solr_clusters/{}/config/{}'.format(solr_cluster_id, config_name),
57+
accept_json=True)
58+
59+
def get_config(self, solr_cluster_id, config_name):
60+
return self.request(method='GET', url='/v1/solr_clusters/{}/config/{}'.format(solr_cluster_id, config_name),
61+
accept_json=True)
62+
63+
def list_collections(self, solr_cluster_id):
64+
return self.request(method='GET', url='/v1/solr_clusters/{}/collections'.format(solr_cluster_id),
65+
accept_json=True)
66+
67+
def create_collection(self, solr_cluster_id, collection_name, config_name):
68+
params = {'collection.configName': config_name, 'name': collection_name}
69+
return self.request(method='POST', url='/v1/solr_clusters/{}/collections'.format(solr_cluster_id),
70+
params=params, accept_json=True)
71+
72+
def delete_collection(self, solr_cluster_id, collection_name, config_name):
73+
params = {'name': collection_name, 'action': 'DELETE'}
74+
return self.request(method='POST', url='/v1/solr_clusters/{}/collections'.format(solr_cluster_id),
75+
params=params, accept_json=True)
76+
77+
def get_pysolr_client(self, solr_cluster_id, collection_name):
78+
base_url = self.url.replace('https://', 'https://' + self.username + ':' + self.password + '@')
79+
url = base_url + '/v1/solr_clusters/{}/solr/{}'.format(solr_cluster_id, collection_name)
80+
return pysolr.Solr(url)
81+
3182
def create_ranker(self, training_data, name=None):
3283
data = None
3384
if name:

0 commit comments

Comments
 (0)