本文整理匯總了Python中SolrClient.SolrClient.index_json方法的典型用法代碼示例。如果您正苦於以下問題:Python SolrClient.index_json方法的具體用法?Python SolrClient.index_json怎麽用?Python SolrClient.index_json使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類SolrClient.SolrClient
的用法示例。
在下文中一共展示了SolrClient.index_json方法的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: index_data
# 需要導入模塊: from SolrClient import SolrClient [as 別名]
# 或者: from SolrClient.SolrClient import index_json [as 別名]
def index_data():
docs = get_data()
client = SolrClient('http://localhost:8983/solr')
client.index_json('stocks', json.dumps(docs))
client.commit('stocks')
示例2: index_json
# 需要導入模塊: from SolrClient import SolrClient [as 別名]
# 或者: from SolrClient.SolrClient import index_json [as 別名]
def index_json():
client = SolrClient('http://localhost:8983/solr')
docs = [
{'id' : '8', 'field8' : 'value8'},
]
client.index_json('test', json.dumps(docs))
client.commit('test')
示例3: ClientTestIndexing
# 需要導入模塊: from SolrClient import SolrClient [as 別名]
# 或者: from SolrClient.SolrClient import index_json [as 別名]
class ClientTestIndexing(unittest.TestCase):
#High Level Client Tests
@classmethod
def setUpClass(self):
self.solr = SolrClient(test_config['SOLR_SERVER'][0], devel=True, auth=test_config['SOLR_CREDENTIALS'])
self.rand_docs = RandomTestData()
self.docs = self.rand_docs.get_docs(50)
for field in test_config['collections']['copy_fields']:
try:
self.solr.schema.delete_copy_field(test_config['SOLR_COLLECTION'],field)
except:
pass
for field in test_config['collections']['fields']:
try:
self.solr.schema.create_field(test_config['SOLR_COLLECTION'],field)
except:
pass
def setUp(self):
self.delete_docs()
self.commit()
def delete_docs(self):
self.solr.delete_doc_by_id(test_config['SOLR_COLLECTION'],'*')
self.commit()
def commit(self):
self.solr.commit(test_config['SOLR_COLLECTION'],openSearcher=True)
sleep(5)
@unittest.skip("Skipping for now")
def test_access_without_auth(self):
if not test_config['SOLR_CREDENTIALS'][0]:
return
solr = SolrClient(test_config['SOLR_SERVER'],devel=True)
with self.assertRaises(ConnectionError) as cm:
solr.query('SolrClient_unittest',{'q':'not_gonna_happen'})
def test_indexing_json(self):
self.docs = self.rand_docs.get_docs(53)
self.solr.index_json(test_config['SOLR_COLLECTION'],json.dumps(self.docs))
self.commit()
sleep(5)
for doc in self.docs:
logging.debug("Checking {}".format(doc['id']))
self.assertEqual(self.solr.query(test_config['SOLR_COLLECTION'],{'q':'id:{}'.format(doc['id'])}).get_num_found(),1)
self.delete_docs()
self.commit()
def test_indexing_conn_log(self):
self.docs = self.rand_docs.get_docs(53)
self.solr.index_json(test_config['SOLR_COLLECTION'],json.dumps(self.docs))
self.commit()
sleep(5)
for doc in self.docs:
logging.debug("Checking {}".format(doc['id']))
self.assertEqual(self.solr.query(test_config['SOLR_COLLECTION'],{'q':'id:{}'.format(doc['id'])}).get_num_found(),1)
logging.info(self.solr.transport._action_log)
self.delete_docs()
self.commit()
def test_index_json_file(self):
self.docs = self.rand_docs.get_docs(55)
with open('temp_file.json','w') as f:
json.dump(self.docs,f)
r = self.solr.stream_file(test_config['SOLR_COLLECTION'],'temp_file.json')
self.commit()
r = self.solr.query(test_config['SOLR_COLLECTION'],{'q':'*:*'})
self.assertEqual(r.get_num_found(),len(self.docs))
self.delete_docs()
self.commit()
try:
os.remove('temp_file.json.gz')
os.remove('temp_file.json')
except:
pass
def test_stream_file_gzip_file(self):
self.docs = self.rand_docs.get_docs(60)
with gzip.open('temp_file.json.gz','wb') as f:
f.write(json.dumps(self.docs).encode('utf-8'))
r = self.solr.stream_file(test_config['SOLR_COLLECTION'],'temp_file.json.gz')
self.commit()
r = self.solr.query(test_config['SOLR_COLLECTION'],{'q':'*:*'})
self.assertEqual(r.get_num_found(),len(self.docs))
self.delete_docs()
self.commit()
try:
os.remove('temp_file.json.gz')
os.remove('temp_file.json')
except:
pass
@unittest.skip("Don't test remote indexing in travis")
def test_index_json_file(self):
self.docs = self.rand_docs.get_docs(61)
#.........這裏部分代碼省略.........
示例4: print
# 需要導入模塊: from SolrClient import SolrClient [as 別名]
# 或者: from SolrClient.SolrClient import index_json [as 別名]
title = track.title
uri = track.uri
id_ = album + ' ' + title
id_ = id_.replace(' ', '_')
id_ = id_.lower()
document = {"id":id_, "title":title, "uri":uri, "album":album, "artist":artist, "track":n}
print(repr(document).encode('cp1252', errors='replace'))
for k in document:
print(str(k+':'+str(document[k])).encode('cp1252', errors='ignore'))
documents.append(document)
n+=1
solr = SolrClient(solr_uri+'/solr')
collection = 'sonos_companion'
response = solr.index_json(collection, json.dumps(documents))
print(response)
# Since solr.commit didn't seem to work, substituted the below, which works
url = solr_uri+"/solr/"+collection+"/update"
r = requests.post(url, data={"commit":"true"})
print(r.text)
resp = input("Do you want to continue? (y or n) ")
if resp not in ('y', 'yes'):
cont = False
######################################################################
# The below would be if you had a lot of documents
#n = 0
#while True:
示例5: in
# 需要導入模塊: from SolrClient import SolrClient [as 別名]
# 或者: from SolrClient.SolrClient import index_json [as 別名]
document = {}
# We create a unique id but concatenating the album and the song title
id_ = item['album'] + ' ' + item['title']
id_ = id_.replace(' ', '_')
document['id'] = id_
document.update({k:item[k] for k in item if k in ('artist','album','title','uri', 'album_art')})
documents.append(document)
n = 0
while True:
# there are limitations in how many docs can be uploaded in a batch but it's more than 100
cur_documents = documents[n:n+100]
if not cur_documents:
break
cur_documents = json.dumps(cur_documents)
response = solr.index_json(collection, cur_documents)
print(response)
#The commit from SolrClient is not working
#response = solr.commit(collection, waitSearcher=False)
#print(response)
# Since solr.commit didn't seem to work, substituted the below, which works
url = ec_uri+":8983/solr/"+collection+"/update"
r = requests.post(url, data={"commit":"true"})
print(r.text)
n+=100
示例6: ClientTestQuery
# 需要導入模塊: from SolrClient import SolrClient [as 別名]
# 或者: from SolrClient.SolrClient import index_json [as 別名]
class ClientTestQuery(unittest.TestCase):
@classmethod
def setUpClass(self):
self.solr = SolrClient(test_config['SOLR_SERVER'][0],devel=True,auth=test_config['SOLR_CREDENTIALS'])
self.rand_docs = RandomTestData()
self.docs = self.rand_docs.get_docs(50)
self.solr.delete_doc_by_id(test_config['SOLR_COLLECTION'],'*')
for field in test_config['collections']['copy_fields']:
try:
self.solr.collections.delete_copy_field(test_config['SOLR_COLLECTION'],field)
except:
pass
for field in test_config['collections']['fields']:
try:
self.solr.collections.create_field(test_config['SOLR_COLLECTION'],field)
except:
pass
#Index Some data
self.solr.index_json(test_config['SOLR_COLLECTION'],json.dumps(self.docs))
self.solr.commit(test_config['SOLR_COLLECTION'],openSearcher=True)
def test_basic_query(self):
r = self.solr.query(test_config['SOLR_COLLECTION'],{'q':'*:*'})
self.assertEqual(r.get_num_found(),len(self.docs))
def test_facet(self):
r = self.solr.query(test_config['SOLR_COLLECTION'],{
'q':'*:*',
'facet':'true',
'facet.field':'facet_test',
})
local_facets = {}
for doc in self.docs:
try:
local_facets[doc['facet_test']] +=1
except:
local_facets[doc['facet_test']] = 1
try:
self.assertDictEqual(local_facets,r.get_facets()['facet_test'])
except Exception as e:
logging.info("local")
logging.info(local_facets)
logging.info("facets")
logging.info(r.get_facets())
raise
def test_facet_with_fq(self):
r = self.solr.query(test_config['SOLR_COLLECTION'],{
'q':'*:*',
'facet':True,
'facet.field':'facet_test',
})
first_facet_field = list(r.get_facets()['facet_test'].keys())[0]
first_facet_field_count = r.get_facets()['facet_test'][first_facet_field]
r = self.solr.query(test_config['SOLR_COLLECTION'],{
'q':'*:*',
'facet':True,
'facet.field':'facet_test',
'fq':'facet_test:{}'.format(first_facet_field)
})
self.assertEqual(r.get_num_found(),first_facet_field_count)
def test_facet_range(self):
res = self.solr.query(test_config['SOLR_COLLECTION'],{
'q':'*:*',
'facet':True,
'facet.range':'price',
'facet.range.start':0,
'facet.range.end':100,
'facet.range.gap':10
})
prices = [doc['price'] for doc in self.docs]
div = lambda x: str(x//10 * 10)
out = {}
for k,g in itertools.groupby(sorted(prices),div):
out[k] = len(list(g)) or 0
self.assertDictEqual(out,res.get_facets_ranges()['price'])
def test_facet_pivot(self):
res = self.solr.query(test_config['SOLR_COLLECTION'],{
'q':'*:*',
'facet':True,
'facet.pivot':['facet_test,price','facet_test,id']
})
out = {}
for doc in self.docs:
if doc['facet_test'] not in out:
out[doc['facet_test']] = {}
if doc['price'] not in out[doc['facet_test']]:
out[doc['facet_test']][doc['price']]=1
else:
out[doc['facet_test']][doc['price']]+=1
self.assertDictEqual(out,res.get_facet_pivot()['facet_test,price'])
def test_get_field_values_as_list(self):
res = self.solr.query(test_config['SOLR_COLLECTION'],{
#.........這裏部分代碼省略.........
示例7: SolrClient
# 需要導入模塊: from SolrClient import SolrClient [as 別名]
# 或者: from SolrClient.SolrClient import index_json [as 別名]
"""
import json
from collections import defaultdict
from SolrClient import SolrClient
solr = SolrClient('http://localhost:8983/solr')
j = defaultdict(dict)
with open('DOI.json', 'r') as f:
for k, v in json.load(f).items():
j[k]['doi'] = v
with open('grobid.json', 'r') as f:
for doc in json.load(f):
for i, pub in enumerate(doc['relatedPublications']):
for k, v in pub.items():
j[doc['id']]['relatedPublications_' + k + '_' + str(i)] = v
with open('geotopic.json', 'r') as f:
for k, v in json.load(f).items():
j[k].update(v)
with open('measurements.json', 'rb') as f:
for doc in json.loads(f.read().decode(errors='ignore')):
j[doc['id']]['units'] = doc['units']
with open('sweet.json', 'r') as f:
for doc in json.load(f):
for k, v in doc.items():
if k.startswith('NER_Sweet_'):
j[doc['id']][k] = v
for k, v in j.items():
v['id'] = k
solr.index_json('collection1', json.dumps(list(j.values())))