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)

存储可变长度或固定长度的字节字符串,类似于 VarBytesColumnFixedBytesColumn . 但是,如果这些列存储每个文档的值,则此列将保留字段中所有唯一值的列表,并且对于每个文档,将短指针存储到唯一列表中。对于可能值的数量小于文档数量的字段(例如“类别”或“章节”),这可以节省大量空间。

此列类型在段中的所有文档中最多支持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并使用包装列(通常是 VarBytesColumnCompressedBytesColumn

如果可以将要存储的值表示为数字或字节,则应使用适当的列类型,以避免酸洗和拔料的时间和大小开销。

实验柱

class whoosh.columns.ClampedNumericColumn(child)

NumericColumn的一种实验包装类型,它将超出范围的值夹紧,而不是引发异常。