columns
模块¶
在下一个版本的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
对象。
基类¶
-
class
whoosh.columns.
Column
¶ 表示将docnum映射到文档值的行的“列”。
接口要求分别存储列的起始偏移量、列数据的长度和文档(行)数,并将它们传递给读卡器对象。
-
default_value
(reverse=False)¶ 返回此列类型的默认值。
-
reader
(dbfile, basepos, length, doccount)¶ 返回A
ColumnReader
对象,可用于从磁盘读取此类型的列。- 参数
dbfile -- 这个
StructFile
朗读basepos -- 文件中列起始处的偏移量。
length -- 列的长度(以字节为单位)在文件中占据。
doccount -- 列中的行(文档)数。
-
stores_lists
()¶ 如果列存储每个文档的值列表而不是单个值,则返回true。
-
writer
(dbfile)¶ 返回A
ColumnWriter
对象,可用于在磁盘上创建此类型的列。- 参数
dbfile -- 这个
StructFile
写信给
-
-
class
whoosh.columns.
ColumnWriter
(dbfile)¶
-
class
whoosh.columns.
ColumnReader
(dbfile, basepos, length, doccount)¶
基本列¶
-
class
whoosh.columns.
VarBytesColumn
(allow_offsets=True, write_offsets_cutoff=32768)¶ 存储可变长度字节字符串。也见
RefBytesColumn
.当前的实现将一个段中所有文档值的总长度限制为2 GB。
默认值(对于索引时没有赋值的文档返回的值)是空的bytestring(
b''
)- 参数
allow_offsets -- 当列中有许多行时,列是否应写入偏移量(这使得打开列的速度更快)。这个论点主要是为了测试。
write_offsets_cutoff -- 当列中的行数超过此数时,写入偏移量(用于速度)。这个论点主要是为了测试。
-
class
whoosh.columns.
FixedBytesColumn
(fixedlen, default=None)¶ 存储固定长度的字节字符串。
- 参数
fixedlen -- 此列中字节字符串的固定长度。
default -- 用于未指定值的文档的默认值。如果不指定默认值,列将使用
b'\x00' * fixedlen
.
-
class
whoosh.columns.
RefBytesColumn
(fixedlen=0, default=None)¶ 存储可变长度或固定长度的字节字符串,类似于
VarBytesColumn
和FixedBytesColumn
. 但是,如果这些列存储每个文档的值,则此列将保留字段中所有唯一值的列表,并且对于每个文档,将短指针存储到唯一列表中。对于可能值的数量小于文档数量的字段(例如“类别”或“章节”),这可以节省大量空间。此列类型在段中的所有文档中最多支持65535个唯一值。您通常应该使用这种列类型,其中唯一值的数量不存在接近该数字的危险(例如,“标记”字段)。如果试图索引过多的唯一值,列将把其他唯一值转换为默认值,并使用
warnings
模块(这通常比崩溃索引器和可能丢失索引文档更好)。- 参数
fixedlen -- 值的可选固定长度。如果指定的数字不是0,则列将要求所有值都是指定的长度。
default -- 用于未指定文档的默认值。如果不指定默认值,列将使用空的bytestring(
b''
,或者如果指定固定长度,b'\x00' * fixedlen
.
-
class
whoosh.columns.
NumericColumn
(typecode, default=0)¶ 将数字(整数和浮点数)存储为压缩二进制。
- 参数
typecode -- 一种类型代码字符(如
struct
模块)指定数字类型。例如,"i"
对于有符号整数。default -- 用于未指定文档的默认值。
技术专栏¶
-
class
whoosh.columns.
BitColumn
(compress_at=2048)¶ 紧凑地存储一列真/假值。
- 参数
compress_at -- 具有此数量或更少值的列将被保存在磁盘上压缩,并加载到RAM中进行读取。将此值设置为0以禁用压缩。
-
class
whoosh.columns.
CompressedBytesColumn
(level=3, module='zlib')¶ 存储使用deflate压缩的可变长度字节字符串(默认情况下)。
- 参数
level -- 要使用的压缩级别。
module -- 包含要使用的压缩模块名称的字符串。默认值为“zlib”。模块应输出“压缩”和“解压缩”功能。
-
class
whoosh.columns.
StructColumn
(spec, default)¶
-
class
whoosh.columns.
PickleColumn
(child)¶ 将任意对象转换为pickled bytestrings并使用包装列(通常是
VarBytesColumn
或CompressedBytesColumn
)如果可以将要存储的值表示为数字或字节,则应使用适当的列类型,以避免酸洗和拔料的时间和大小开销。