Skip to content

Instantly share code, notes, and snippets.

@capooti
Last active March 10, 2018 22:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save capooti/d71cbc1f8793d687625e853eaf01d9da to your computer and use it in GitHub Desktop.
Save capooti/d71cbc1f8793d687625e853eaf01d9da to your computer and use it in GitHub Desktop.
Solr vs pycsw with RDBMS in WorldMap
import pysolr
from owslib.csw import CatalogueServiceWeb, PropertyIsEqualTo
import time
keywords = (
'agriculture',
'climate',
'farming',
'health',
'ocean',
'planning',
'population',
'society',
'transportation',
'utilities',
)
n = 100
solr = pysolr.Solr('http://worldmap.harvard.edu/solr/hypermap/', timeout=10)
csw = CatalogueServiceWeb('http://hh.worldmap.harvard.edu/registry/hypermap/csw')
solr_results = {}
def query_solr(keyword):
# returning only 10 results text
results = solr.search(keyword)
return results.hits
def query_pycsw(keyword):
# returning only 10 results text
csw_query = PropertyIsEqualTo('csw:AnyText', keyword)
csw.getrecords2(constraints=[csw_query], maxrecords=10)
return csw.results['matches']
for k in keywords:
# 1. solr
print 'Querying Solr with %s' % k
t0_solr = time.time()
for i in range(n): query_solr(k)
t1_solr = time.time()
time_solr = (t1_solr-t0_solr)/n
results_solr = query_solr(k)
# 2. solr
print 'Querying pycsw with %s' % k
t0_pycsw = time.time()
for i in range(n): query_pycsw(k)
t1_pycsw = time.time()
time_pycsw = (t1_pycsw-t0_pycsw)/n
results_pycsw = query_pycsw(k)
# summarize
solr_results[k] = [results_solr, float('{0:.3f}'.format(time_solr)), results_pycsw, float('{0:.3f}'.format(time_pycsw))]
print solr_results
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment