在下一个版本的whoosh中,列的API和实现可能会发生变化!
此模块包含“column”对象,可以将其用作字段对象的参数 sortable=
关键字参数。当用户指定时,每个字段都定义默认的列类型 sortable=True
(字段返回的对象 default_column()
方法)。
大多数字段的默认列类型是 VarBytesColumn
,尽管数字和日期字段使用 NumericColumn
. Expert users may use other field types that may be faster or more storage efficient based on the field contents. For example, if a field always contains one of a limited number of possible values, a RefBytesColumn
只存储一次值就可以节省空间。如果字段的值始终是固定长度,则 FixedBytesColumn
通过不存储每个值的长度来节省空间。
A Column
对象主要用于存储配置信息,并提供两种重要方法: writer()
归还 ColumnWriter
reader()
归还 ColumnReader
对象。
whoosh.columns.
Column
¶表示将docnum映射到文档值的行的“列”。
接口要求分别存储列的起始偏移量、列数据的长度和文档(行)数,并将它们传递给读卡器对象。
default_value
(reverse=False)¶返回此列类型的默认值。
reader
(dbfile, basepos, length, doccount)¶返回A ColumnReader
对象,可用于从磁盘读取此类型的列。
参数: |
|
---|
stores_lists
()¶如果列存储每个文档的值列表而不是单个值,则返回true。
writer
(dbfile)¶返回A ColumnWriter
对象,可用于在磁盘上创建此类型的列。
参数: | dbfile -- 这个 StructFile 写信给 |
---|
whoosh.columns.
ColumnWriter
(dbfile)¶whoosh.columns.
ColumnReader
(dbfile, basepos, length, doccount)¶whoosh.columns.
VarBytesColumn
(allow_offsets=True, write_offsets_cutoff=32768)¶存储可变长度字节字符串。也见 RefBytesColumn
.
当前的实现将一个段中所有文档值的总长度限制为2 GB。
默认值(对于索引时没有赋值的文档返回的值)是空的bytestring( b''
)
参数: |
|
---|
whoosh.columns.
FixedBytesColumn
(fixedlen, default=None)¶存储固定长度的字节字符串。
参数: |
|
---|
whoosh.columns.
RefBytesColumn
(fixedlen=0, default=None)¶存储可变长度或固定长度的字节字符串,类似于 VarBytesColumn
和 FixedBytesColumn
. 但是,如果这些列存储每个文档的值,则此列将保留字段中所有唯一值的列表,并且对于每个文档,将短指针存储到唯一列表中。对于可能值的数量小于文档数量的字段(例如“类别”或“章节”),这可以节省大量空间。
此列类型在段中的所有文档中最多支持65535个唯一值。您通常应该使用这种列类型,其中唯一值的数量不存在接近该数字的危险(例如,“标记”字段)。如果试图索引过多的唯一值,列将把其他唯一值转换为默认值,并使用 warnings
模块(这通常比崩溃索引器和可能丢失索引文档更好)。
参数: |
|
---|
whoosh.columns.
NumericColumn
(typecode, default=0)¶将数字(整数和浮点数)存储为压缩二进制。
参数: |
|
---|
whoosh.columns.
BitColumn
(compress_at=2048)¶紧凑地存储一列真/假值。
参数: | compress_at -- 具有此数量或更少值的列将被保存在磁盘上压缩,并加载到RAM中进行读取。将此值设置为0以禁用压缩。 |
---|
whoosh.columns.
CompressedBytesColumn
(level=3, module='zlib')¶存储使用deflate压缩的可变长度字节字符串(默认情况下)。
参数: |
|
---|
whoosh.columns.
StructColumn
(spec, default)¶whoosh.columns.
PickleColumn
(child)¶将任意对象转换为pickled bytestrings并使用包装列(通常是 VarBytesColumn
或 CompressedBytesColumn
)
如果可以将要存储的值表示为数字或字节,则应使用适当的列类型,以避免酸洗和拔料的时间和大小开销。