def testFromList(self): "Test population of SimpleResultSet using fromList method." rs = SimpleResultSet(self.session) self.assertEqual(len(rs), 0) self.assertIsInstance(rs, SimpleResultSet) rs.fromList([self.rsi1, self.rsi3]) for x, y in zip(self.a, rs): self.assertEqual(x, y)
def _deserialise(self, session, data, size, id): data = data.decode('string_escape') fmt = 'l' * size ids = struct.unpack(fmt, data) # can't use bitfield, as need to preserve order rset = SimpleResultSet(session) items = [SimpleResultSetItem(session, x, resultSet=rset) for x in ids] rset.fromList(items) rset.id = id return rset
def _deserialise(self, session, data, size, id_): data = data.decode('string_escape') fmt = '<' + 'l' * size ids = struct.unpack(fmt, data) # can't use bitfield, as need to preserve order rset = SimpleResultSet(session) items = [SimpleResultSetItem(session, x, resultSet=rset) for x in ids] rset.fromList(items) rset.id = id_ return rset
def construct_resultSet(self, session, terms, queryHash={}): # in: res.dictresult() s = SimpleResultSet(session, []) rsilist = [] for t in terms['records']: (store, id) = t['recordid'].split('/', 1) occs = t['occurences'] item = SimpleResultSetItem(session, id, store, occs, resultSet=s) rsilist.append(item) s.fromList(rsilist) s.index = self if queryHash: s.queryTerm = queryHash['text'] s.queryFreq = queryHash['occurences'] s.totalRecs = terms['totalRecs'] s.totalOccs = terms['totalOccs'] return s
def search(self, session, query, db): # Kludgey optimisation pm = db.get_path(session, 'protocolMap') if not pm: db._cacheProtocolMaps(session) pm = db.protocolMaps.get('http://www.loc.gov/zing/srw/') db.paths['protocolMap'] = pm query = self._cql_to_sql(session, query, pm) res = self._query(query) dr = res.dictresult() rset = SimpleResultSet([]) rsilist = [] for t in dr: (store, id) = t['recordid'].split('/', 1) item = SimpleResultSetItem(session, id, store, 1, resultSet=rset) rsilist.append(item) rset.fromList(rsilist) return rset