whoosh提供了计算一组文档的“关键术语”的方法。对于这些方法,“关键术语”基本上是指在给定的文档中频繁出现的术语,但在整个索引集合中相对较少出现。
由于这是一个纯粹的统计操作,而不是自然语言处理或人工智能功能,因此结果的质量将根据内容、文档集合的大小以及提取关键字的文档数而变化。
这些方法对于向用户提供以下功能非常有用:
获取更多的文档,比如某个搜索结果。这要求对要匹配的字段进行矢量化或存储,或者您有权访问原始文本(例如从数据库中获取的文本)。
使用 more_like_this()
::
results = mysearcher.search(myquery)
first_hit = results[0]
more_results = first_hit.more_like_this("content")
提取a中前n个文档的关键字 whoosh.searching.Results
对象。 这要求字段是矢量化的或是存储的.
使用 key_terms()
方法 whoosh.searching.Results
对象从结果集的前n个文档中提取关键字。
例如,提取 five 关键术语来自 content
顶部区域 ten 结果对象的文档:
keywords = [keyword for keyword, score
in results.key_terms("content", docs=10, numterms=5)
提取任意文档集的关键字。 这要求字段是矢量化的或是存储的.
使用 document_number()
或 document_numbers()
方法 whoosh.searching.Searcher
对象获取要从中提取关键字的文档的文档编号。
使用 key_terms()
A方法 whoosh.searching.Searcher
要提取关键字,给定文档编号列表。
例如,假设您有电子邮件索引。从中提取关键术语 content
电子邮件领域 emailto
字段包含 matt@whoosh.ca
::
with email_index.searcher() as s:
docnums = s.document_numbers(emailto=u"matt@whoosh.ca")
keywords = [keyword for keyword, score
in s.key_terms(docnums, "body")]
从索引以外的任意文本提取关键字。
使用 key_terms_from_text()
A方法 whoosh.searching.Searcher
要提取关键字,给定文本:
with email_index.searcher() as s:
keywords = [keyword for keyword, score
in s.key_terms_from_text("body", mytext)]
这个 ExpansionModel
中的子类 whoosh.classify
模块为关键词实现不同的权重功能。这些模型从Terrier的原始Java实现转换为Python。