本文整理汇总了Python中whoosh.filedb.filestore.RamStorage.open_index方法的典型用法代码示例。如果您正苦于以下问题:Python RamStorage.open_index方法的具体用法?Python RamStorage.open_index怎么用?Python RamStorage.open_index使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类whoosh.filedb.filestore.RamStorage
的用法示例。
在下文中一共展示了RamStorage.open_index方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_persistent_cache
# 需要导入模块: from whoosh.filedb.filestore import RamStorage [as 别名]
# 或者: from whoosh.filedb.filestore.RamStorage import open_index [as 别名]
def test_persistent_cache():
schema = fields.Schema(id=fields.ID(stored=True))
st = RamStorage()
ix = st.create_index(schema)
with ix.writer() as w:
for term in u("charlie alfa echo bravo delta").split():
w.add_document(id=term)
ix = st.open_index()
with ix.reader() as r:
_ = r.fieldcache("id")
del _
ix = st.open_index()
with ix.reader() as r:
assert r.fieldcache_available("id")
assert not r.fieldcache_loaded("id")
fc = r.fieldcache("id")
assert r.fieldcache_loaded("id")
assert_equal(list(fc.order), [3, 1, 5, 2, 4])
assert_equal(list(fc.texts), [u('\uffff'), u'alfa', u'bravo',
u'charlie', u'delta', u'echo'])
示例2: test_stored_fields2
# 需要导入模块: from whoosh.filedb.filestore import RamStorage [as 别名]
# 或者: from whoosh.filedb.filestore.RamStorage import open_index [as 别名]
def test_stored_fields2():
schema = fields.Schema(content=fields.TEXT(stored=True),
title=fields.TEXT(stored=True),
summary=fields.STORED,
path=fields.ID(stored=True),
helpid=fields.KEYWORD,
parent=fields.KEYWORD,
context=fields.KEYWORD(stored=True),
type=fields.KEYWORD(stored=True),
status=fields.KEYWORD(stored=True),
superclass=fields.KEYWORD(stored=True),
exampleFor=fields.KEYWORD(stored=True),
chapter=fields.KEYWORD(stored=True),
replaces=fields.KEYWORD,
time=fields.STORED,
methods=fields.STORED,
exampleFile=fields.STORED,
)
storedkeys = ["chapter", "content", "context", "exampleFile",
"exampleFor", "methods", "path", "status", "summary",
"superclass", "time", "title", "type"]
assert_equal(storedkeys, schema.stored_names())
st = RamStorage()
ix = st.create_index(schema)
writer = ix.writer()
writer.add_document(content=u("Content of this document."),
title=u("This is the title"),
summary=u("This is the summary"), path=u("/main"))
writer.add_document(content=u("Second document."), title=u("Second title"),
summary=u("Summary numero due"), path=u("/second"))
writer.add_document(content=u("Third document."), title=u("Title 3"),
summary=u("Summary treo"), path=u("/san"))
writer.commit()
ix.close()
ix = st.open_index()
with ix.searcher() as s:
doc = s.document(path="/main")
assert ([doc[k] for k in sorted(doc.keys())]
== ["Content of this document.", "/main",
"This is the summary", "This is the title"])
ix.close()
示例3: WhooshStore
# 需要导入模块: from whoosh.filedb.filestore import RamStorage [as 别名]
# 或者: from whoosh.filedb.filestore.RamStorage import open_index [as 别名]
class WhooshStore(SAMLStoreBase):
def __init__(self):
self.schema = Schema(scopes=KEYWORD(),
descr=TEXT(),
service_name=TEXT(),
service_descr=TEXT(),
keywords=KEYWORD())
self.schema.add("object_id", ID(stored=True, unique=True))
self.schema.add("entity_id", ID(stored=True, unique=True))
for a in list(ATTRS.keys()):
self.schema.add(a, KEYWORD())
self._collections = set()
from whoosh.filedb.filestore import RamStorage, FileStorage
self.storage = RamStorage()
self.storage.create()
self.index = self.storage.create_index(self.schema)
self.objects = dict()
self.infos = dict()
def dump(self):
ix = self.storage.open_index()
print(ix.schema)
from whoosh.query import Every
with ix.searcher() as searcher:
for result in ix.searcher().search(Every('object_id')):
print(result)
def _index_prep(self, info):
if 'entity_attributes' in info:
for a, v in list(info.pop('entity_attributes').items()):
info[a] = v
for a, v in list(info.items()):
if type(v) is not list and type(v) is not tuple:
info[a] = [info.pop(a)]
if a in ATTRS_INV:
info[ATTRS_INV[a]] = info.pop(a)
for a in list(info.keys()):
if a not in self.schema.names():
del info[a]
for a, v in list(info.items()):
info[a] = [six.text_type(vv) for vv in v]
def _index(self, e, tid=None):
info = entity_info(e)
if tid is not None:
info['collection_id'] = tid
self._index_prep(info)
id = six.text_type(object_id(e))
# mix in tid here
self.infos[id] = info
self.objects[id] = e
ix = self.storage.open_index()
with ix.writer() as writer:
writer.add_document(object_id=id, **info)
writer.mergetype = writing.CLEAR
def update(self, t, tid=None, ts=None, merge_strategy=None):
relt = root(t)
assert (relt is not None)
ne = 0
if relt.tag == "{%s}EntityDescriptor" % NS['md']:
self._index(relt)
ne += 1
elif relt.tag == "{%s}EntitiesDescriptor" % NS['md']:
if tid is None:
tid = relt.get('Name')
self._collections.add(tid)
for e in iter_entities(t):
self._index(e, tid=tid)
ne += 1
return ne
def collections(self):
return b2u(self._collections)
def reset(self):
self.__init__()
def size(self, a=None, v=None):
if a is None:
return len(list(self.objects.keys()))
elif a is not None and v is None:
return len(self.attribute(a))
else:
return len(self.lookup("{!s}={!s}".format(a, v)))
def _attributes(self):
ix = self.storage.open_index()
with ix.reader() as reader:
for n in reader.indexed_field_names():
if n in ATTRS:
yield b2u(ATTRS[n])
def attributes(self):
#.........这里部分代码省略.........