def getDocuments(ism, isle, storageId, locationId): iss = IndexSearchConstraint(None,None) iss.constrainByIsland(isle) iss.constrainByStorageIds([Long(storageId)]) iss.setShardConstraint(locationId) iss.setOutputFields(['*']) qr = ism.search('',iss, None, CallerApp.INTERNAL) results = [] for doc in qr: results.append(doc) return results
def search(isle, term): mc = ManagementContainer.getInstance() sm = mc.getIndexSearchManager() im = mc.getIslandManager() pm = mc.getPartitionManager() fIS = IndexSearchConstraint(None, None) fIS.constrainByIsland(isle) fIS.constrainByNumberOfHitsToReturn(10) fIS.constrainByMinimumStorageId(0) fIS.setOutputFields(["storageid", "partitionid"]) fIS.sortBy("storageid", True) done = False cnt = 0 lastID = 0 while not done: ok = False while not ok: try: fQR = sm.search(term, fIS, None, CallerApp.INTERNAL) ok = True except Throwable, t: print "Exception caught during search, retry = true", t t.printStackTrace() numDocs = fQR.getDocCount() print "Found numDocs", numDocs done = fQR.getDocCount() == 0 print "Preview some data" for doc in fQR.documents(): # print doc.getPartitionID(),pm.getPartition(doc.getPartitionID()).isReadOnly(),doc.getStorageID(),doc.getReceivedDate() print doc.getPartitionID(), doc.getStorageID() lastID = doc.getStorageID() cnt += 1 fIS.constrainByMinimumStorageId(lastID) # just loop once done = True