Advertisement
Guest User

Untitled

a guest
Feb 13th, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. def querySolr(core: String, selectQuery: String, server: SolrClient,
  2. pageNum: Int, pageStart: Int, pageSize: Int): (Long, SolrDocumentList) = {
  3. val query = new SolrQuery(core)
  4. query.setQuery(selectQuery)
  5. query.setStart(pageStart)
  6. query.setRows(pageSize)
  7. val response: QueryResponse = server.query(query)
  8. val results: SolrDocumentList = response.getResults
  9. val total = results.getNumFound
  10. (total, results)
  11. }
  12.  
  13. def pageCalc(page: Int, pageSize: Int, totalItems: Long): (Int, Long, Long) = {
  14. val from = ((page - 1) * pageSize) + 1
  15. val to = totalItems min (from + pageSize - 1)
  16. val totalPages = (totalItems / pageSize) + (if (totalItems % pageSize > 0) 1 else 0)
  17. (from, to, totalPages)
  18. }
  19.  
  20. def getRecordsFromSolr(core: String, solrhost: String, userName: String, password: String,
  21. query: String): List[SolrDocument] = {
  22.  
  23. val startTime = System.nanoTime()
  24. val url = "https://" + solrhost + ":8983/solr/" + core
  25. val solrPort = 8983
  26.  
  27. val builder: SSLContextBuilder = new SSLContextBuilder()
  28. builder.loadTrustMaterial(null, new TrustSelfSignedStrategy())
  29. val sslsf: SSLConnectionSocketFactory = new SSLConnectionSocketFactory(
  30. builder.build(), SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER
  31. )
  32.  
  33. val credsProvider: CredentialsProvider = new BasicCredentialsProvider()
  34. credsProvider.setCredentials(
  35. new AuthScope(solrhost, solrPort),
  36. new UsernamePasswordCredentials(userName, password))
  37.  
  38. val httpclient: CloseableHttpClient =HttpClients.custom().setSSLSocketFactory(sslsf).setDefaultCredentialsProvider(credsProvider).build()
  39.  
  40. val server: SolrClient = new HttpSolrClient(url, httpclient)
  41.  
  42. logger.info("solr connection completed")
  43.  
  44. val pageSize = 1000
  45. var pageNum = 1
  46. var nextPage: (Int, Long, Long) = (0, 1000, 0)
  47. var offset: Long = 0
  48.  
  49. var totalResult = querySolr(core, query, server, pageNum, 0, pageSize)
  50. var total = totalResult._1
  51. var results: List[SolrDocument] = totalResult._2.toList
  52. while (total > offset) {
  53. offset += pageSize
  54. pageNum += 1
  55. nextPage = pageCalc(pageNum, pageSize, total)
  56. totalResult = querySolr(core, query, server, pageNum, nextPage._1, pageSize)
  57. total = totalResult._1
  58. results = (results ++ totalResult._2.toList)
  59. }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement