def test_sorting(): from whoosh import sorting schema = fields.Schema(id=fields.STORED, name=fields.ID(stored=True), size=fields.NUMERIC) ix = RamIndex(schema) with ix.writer() as w: w.add_document(id=0, name=u("bravo"), size=10) w.add_document(id=1, name=u("alfa"), size=9) w.add_document(id=2, name=u("delta"), size=8) w.add_document(id=3, name=u("charlie"), size=7) with ix.searcher() as s: q = query.Every() r = s.search(q, sortedby="name") assert_equal([hit["id"] for hit in r], [1, 0, 3, 2]) r = s.search(q, sortedby="size") assert_equal([hit["id"] for hit in r], [3, 2, 1, 0]) facet = sorting.FieldFacet("size", reverse=True) r = s.search(q, sortedby=facet) assert_equal([hit["id"] for hit in r], [0, 1, 2, 3])
def test_block_info(): schema = fields.Schema(key=fields.KEYWORD) ix = RamIndex(schema) ix.add_document(key=u("alfa bravo charlie")) ix.add_document(key=u("bravo delta")) ix.add_document(key=u("charlie delta echo foxtrot")) ix.add_document(key=u("delta echo foxtrot golf hotel india")) ix.add_document(key=u("echo foxtrot golf hotel india juliet alfa bravo")) s = ix.searcher() p = s.postings("key", "bravo") assert p.supports_block_quality() assert_equal(p.block_min_length(), 2) assert_equal(p.block_max_length(), 8)
def test_block_info(): schema = fields.Schema(key=fields.KEYWORD) ix = RamIndex(schema) ix.add_document(key=u("alfa bravo charlie")) ix.add_document(key=u("bravo delta")) ix.add_document(key=u("charlie delta echo foxtrot")) ix.add_document(key=u("delta echo foxtrot golf hotel india")) ix.add_document(key=u("echo foxtrot golf hotel india juliet alfa bravo")) s = ix.searcher() p = s.postings("key", "bravo") assert p.supports_block_quality() assert_equal(p.block_min_length(), 2) assert_equal(p.block_max_length(), 8) assert_equal(p.block_max_wol(), 0.5)
def test_threaded(): from threading import Thread class TWriter(Thread): def __init__(self, ix): Thread.__init__(self) self.ix = ix def run(self): ix = self.ix for i in xrange(1000): ix.update_document(id=text_type(i), key=u("a")) class TReader(Thread): def __init__(self, ix): Thread.__init__(self) self.ix = ix self.go = True def run(self): s = self.ix.searcher() while self.go: r = s.search(query.Term("key", u("a"))) assert_equal(len(r), 1) schema = fields.Schema(id=fields.ID(stored=True), key=fields.ID(unique=True, stored=True)) ix = RamIndex(schema) tw = TWriter(ix) tr = TReader(ix) tw.start() tr.start() tw.join() tr.go = False tr.join() assert_equal(ix.doc_count(), 1) with ix.searcher() as s: assert_equal(len(list(s.documents(key="a"))), 1)