包含与字段相关的函数和类。
whoosh.fields.
Schema
(**fields)¶表示索引中字段的集合。将字段名映射到定义每个字段行为的FieldType对象。
索引的低级部分使用字段号而不是字段名来实现紧凑性。这个类有几种方法可以在字段名、字段号和字段对象本身之间进行转换。
构造函数的所有关键字参数都被视为fieldname=fieldtype对。FieldType可以是实例化的FieldType对象,也可以是FieldType子类(在这种情况下,架构将在添加它之前用默认的构造函数实例化它)。
例如::
s = Schema(content = TEXT,
title = TEXT(stored = True),
tags = KEYWORD(stored = True))
add
(name, fieldtype, glob=False)¶向此架构中添加字段。
参数: |
|
---|
copy
()¶返回架构的浅副本。字段实例没有深度复制,因此它们在模式副本之间共享。
items
()¶返回此架构中字段的(“fieldname”,field_object)对列表。
names
(check_names=None)¶返回此架构中字段的名称列表。
参数: | check_names -- (可选)字段名的序列,以检查架构是否接受它们作为(动态)字段名-可接受的名称也将出现在结果列表中。注意:也可以在check-name中使用静态字段名,这样不会在结果列表中创建重复项。不支持的名称将不在结果列表中。 |
---|
scorable_names
()¶返回存储字段长度的字段的名称列表。
stored_names
()¶返回存储字段的名称列表。
whoosh.fields.
SchemaClass
(**fields)¶允许您使用声明性语法定义架构,类似于Django模型:
class MySchema(SchemaClass):
path = ID
date = DATETIME
content = TEXT
可以使用继承在架构之间共享公共字段::
class Parent(SchemaClass):
path = ID(stored=True)
date = DATETIME
class Child1(Parent):
content = TEXT(positions=False)
class Child2(Parent):
tags = KEYWORD
此类重写 __new__
因此,实例化子类总是会导致 Schema
.
>>> class MySchema(SchemaClass):
... title = TEXT(stored=True)
... content = TEXT
...
>>> s = MySchema()
>>> type(s)
<class 'whoosh.fields.Schema'>
构造函数的所有关键字参数都被视为fieldname=fieldtype对。FieldType可以是实例化的FieldType对象,也可以是FieldType子类(在这种情况下,架构将在添加它之前用默认的构造函数实例化它)。
例如::
s = Schema(content = TEXT,
title = TEXT(stored = True),
tags = KEYWORD(stored = True))
whoosh.fields.
FieldType
(format, analyzer, scorable=False, stored=False, unique=False, multitoken_query='default', sortable=False, vector=None)¶表示字段配置。
FieldType对象支持以下属性:
Format
对象,任何真值都表示使用索引格式作为术语向量格式。任何flase值都意味着不存储该字段的术语向量。基字段类型的构造函数只允许您提供自己的属性值。子类可以为您配置其中的一部分或全部。
clean
()¶清除字段和任何子对象中的任何缓存信息。
index
(value, **kwargs)¶为输入值中的每个唯一单词返回(btex、frequency、weight、encoded_value)元组的迭代器。
默认实现使用 analyzer
属性将值标记为字符串,然后使用UTF-8将其编码为字节。
parse_query
(fieldname, qstring, boost=1.0)¶什么时候? self_parsing()
返回true,查询分析器将调用此方法来分析基本查询文本。
parse_range
(fieldname, start, end, startexcl, endexcl, boost=1.0)¶什么时候? self_parsing()
返回true,查询分析器将调用此方法来分析范围查询文本。如果此方法返回none而不是query对象,解析器将返回到使用process_text()解析开始和结束术语。
process_text
(qstring, mode='', **kwargs)¶分析给定的字符串并返回标记文本的迭代器。
>>> field = fields.TEXT()
>>> list(field.process_text("The ides of March"))
["ides", "march"]
self_parsing
()¶Subclasses should override this method to return True if they want the query parser to call the field's parse_query()
方法,而不是在此字段中的文本上运行分析器。当字段需要完全控制如何解释查询时(如在数字字段类型中),这很有用。
separate_spelling
()¶如果字段在单独的字段中存储未删除的单词以提供拼写建议,则返回true。
sortable_terms
(ixreader, fieldname)¶返回给定读卡器和字段中“可排序”标记的迭代器。这些值可用于排序。默认实现只返回字段中的所有标记。
这可以被字段类型(如numeric)覆盖,其中字段中的某些值对排序无效。
spellable_words
(value)¶返回输入值中每个唯一单词(按排序顺序)的迭代器,适合包含在字段的单词图中。
默认行为是使用关键字参数调用字段分析器 no_morph=True
这应该使分析器跳过任何形态转换过滤器(例如词干),以保留单词的原始形式。外来字段类型可能需要重写此行为。
spelling_fieldname
(fieldname)¶返回用于拼写建议而不是此字段的字段的名称。
参数: | fieldname -- 此字段的名称。 |
---|
subfields
()¶返回的迭代器 (name_prefix, fieldobject)
将内容放入此字段时需要索引的字段对。默认实现只会生成 ("", self)
.
supports
(name)¶如果基础格式支持给定的过账值类型,则返回true。
>>> field = TEXT()
>>> field.supports("positions")
True
>>> field.supports("chars")
False
to_bytes
(value)¶返回给定值的字节表示形式,适合写入磁盘。默认实现假定一个Unicode值,并使用UTF-8对其进行编码。
to_column_value
(value)¶返回适合插入此字段的“文档值”列的对象。默认实现只是调用 self.to_bytes(value)
.
tokenize
(value, **kwargs)¶分析给定的字符串并返回令牌对象的迭代器(注意:出于性能原因,实际上相同的令牌通过不同的属性反复生成)。
whoosh.fields.
ID
(stored=False, unique=False, field_boost=1.0, sortable=False, analyzer=None)¶配置的字段类型,将字段的整个值作为一个标记进行索引。这对于不希望标记化的数据很有用,例如文件的路径。
参数: | stored -- 此字段的值是否与文档一起存储。 |
---|
whoosh.fields.
IDLIST
(stored=False, unique=False, expression=None, field_boost=1.0)¶为包含由空格和/或标点分隔的ID的字段(或任何其他字段,使用表达式param)配置的字段类型。
参数: |
|
---|
whoosh.fields.
STORED
¶为要存储但不是索引的字段配置的字段类型。
whoosh.fields.
KEYWORD
(stored=False, lowercase=False, commas=False, scorable=False, unique=False, field_boost=1.0, sortable=False, vector=None, analyzer=None)¶为包含空格分隔或逗号分隔的关键字(如标记)数据的字段配置的字段类型。默认情况下,不存储位置信息(因此不允许在此字段中搜索短语),也不使该字段可评分。
参数: |
|
---|
whoosh.fields.
TEXT
(analyzer=None, phrase=True, chars=False, stored=False, field_boost=1.0, multitoken_query='default', spelling=False, sortable=False, lang=None, vector=None, spelling_prefix='spell_')¶为文本字段(例如文章正文)配置的字段类型。默认情况下,存储位置信息以允许短语搜索。此字段类型始终可记分。
参数: |
|
---|
whoosh.fields.
NUMERIC
(numtype=<class 'int'>, bits=32, stored=False, unique=False, field_boost=1.0, decimal_places=0, shift_step=4, signed=True, sortable=False, default=None)¶允许以相对较短的固定宽度索引整数或浮点数的特殊字段类型。该字段在索引前将数字转换为可排序的字节。
指定字段的数字类型( int
或 float
)当你创建 NUMERIC
对象。默认值为 int
. 为了 int
,可以指定以位为单位的大小。( 32
或 64
)对于两者 int
和 float
您可以指定 signed
关键字参数(默认为 True
)
>>> schema = Schema(path=STORED, position=NUMERIC(int, 64, signed=False))
>>> ix = storage.create_index(schema)
>>> with ix.writer() as w:
... w.add_document(path="/a", position=5820402204)
...
还可以使用数字字段通过指定 int
或 long
以及 decimal_places
关键字参数。这只需将每个数字乘以 (10 ** decimal_places)
在将其存储为整数之前。当然,这可能会丢弃十进制的prceision(通过截断,而不是舍入),并施加与 int
/ long
但对于某些应用来说,这些可能是可以接受的。
>>> from decimal import Decimal
>>> schema = Schema(path=STORED, position=NUMERIC(int, decimal_places=4))
>>> ix = storage.create_index(schema)
>>> with ix.writer() as w:
... w.add_document(path="/a", position=Decimal("123.45")
...
参数: |
|
---|
whoosh.fields.
DATETIME
(stored=False, unique=False, sortable=False)¶用于为日期时间对象编制索引的特殊字段类型。该字段在索引前将日期时间对象转换为可排序文本。
由于此字段基于python的datetime模块,因此它具有该模块的所有限制,例如无法在无神论的公历中表示1年之前的日期。但是,由于此字段将日期时间存储为整数微秒,因此如果Python日期时间实现支持的话,它可以轻松地表示更广泛的日期范围。
>>> schema = Schema(path=STORED, date=DATETIME)
>>> ix = storage.create_index(schema)
>>> w = ix.writer()
>>> w.add_document(path="/a", date=datetime.now())
>>> w.commit()
参数: |
|
---|
whoosh.fields.
BOOLEAN
(stored=False, field_boost=1.0)¶允许为布尔值(true和false)编制索引的特殊字段类型。该字段在索引前将布尔值转换为文本。
>>> schema = Schema(path=STORED, done=BOOLEAN)
>>> ix = storage.create_index(schema)
>>> w = ix.writer()
>>> w.add_document(path="/a", done=False)
>>> w.commit()
参数: | stored -- 此字段的值是否与文档一起存储。 |
---|
whoosh.fields.
NGRAM
(minsize=2, maxsize=4, stored=False, field_boost=1.0, queryor=False, phrase=False, sortable=False)¶将文本索引为n-grams的配置字段。例如,对于字段类型ngram(3,4),值“hello”将被索引为标记“hel”、“hell”、“ell”、“ello”、“llo”。此字段类型将整个文本剪切成n个标记,包括空格和标点符号。见 NGRAMWORDS
对于字段类型,先将文本拆分为单词,然后再将单词拆分为n-grams。
参数: |
|
---|
whoosh.fields.
NGRAMWORDS
(minsize=2, maxsize=4, stored=False, field_boost=1.0, tokenizer=None, at=None, queryor=False, sortable=False)¶配置的字段使用记号赋予器将文本剪切成单词,将单词放低后将单词剪切成n-gram。
参数: |
|
---|