def xapian_search(self, query_string): database = xapian.Database(settings.HAYSTACK_XAPIAN_PATH) if query_string: qp = xapian.QueryParser() qp.set_database(database) query = qp.parse_query(query_string, xapian.QueryParser.FLAG_WILDCARD) else: query = xapian.Query(query_string) # Empty query matches all enquire = xapian.Enquire(database) enquire.set_query(query) matches = enquire.get_mset(0, database.get_doccount()) document_list = [] for match in matches: app_label, module_name, pk, model_data = pickle.loads(match.document.get_data()) for key, value in model_data.iteritems(): model_data[key] = _marshal_value(value) model_data['id'] = u'%s.%s.%d' % (app_label, module_name, pk) document_list.append(model_data) return document_list
def test__marshal_value(self): self.assertEqual(_marshal_value('abc'), u'abc') self.assertEqual(_marshal_value(1), '000000000001') self.assertEqual(_marshal_value(2653), '000000002653') self.assertEqual(_marshal_value(25.5), '\xb2`') self.assertEqual(_marshal_value([1, 2, 3]), u'[1, 2, 3]') self.assertEqual(_marshal_value((1, 2, 3)), u'(1, 2, 3)') self.assertEqual(_marshal_value({'a': 1, 'c': 3, 'b': 2}), u"{'a': 1, 'c': 3, 'b': 2}") self.assertEqual(_marshal_value(datetime.datetime(2009, 5, 9, 16, 14)), u'20090509161400') self.assertEqual(_marshal_value(datetime.datetime(2009, 5, 9, 0, 0)), u'20090509000000') self.assertEqual(_marshal_value(datetime.datetime(1899, 5, 18, 0, 0)), u'18990518000000') self.assertEqual(_marshal_value(datetime.datetime(2009, 5, 18, 1, 16, 30, 250)), u'20090518011630000250')
def test__marshal_value(self): self.assertEqual(_marshal_value('abc'), u'abc') self.assertEqual(_marshal_value(1), '000000000001') self.assertEqual(_marshal_value(2653), '000000002653') self.assertEqual(_marshal_value(25.5), '\xb2`') self.assertEqual(_marshal_value([1, 2, 3]), u'[1, 2, 3]') self.assertEqual(_marshal_value((1, 2, 3)), u'(1, 2, 3)') self.assertEqual(_marshal_value({ 'a': 1, 'c': 3, 'b': 2 }), u"{'a': 1, 'c': 3, 'b': 2}") self.assertEqual(_marshal_value(datetime.datetime(2009, 5, 9, 16, 14)), u'20090509161400') self.assertEqual(_marshal_value(datetime.datetime(2009, 5, 9, 0, 0)), u'20090509000000') self.assertEqual(_marshal_value(datetime.datetime(1899, 5, 18, 0, 0)), u'18990518000000') self.assertEqual( _marshal_value(datetime.datetime(2009, 5, 18, 1, 16, 30, 250)), u'20090518011630000250')