whoosh 2.x发行说明¶

Whoosh2.7

Whoosh2.5

Whoosh2.4

Whoosh 2.3.2

Whoosh 2.3.1

Whoosh2.3

Whoosh2.2

Whoosh2.1

此版本修复了几个错误,并包含了要突出显示的速度改进。见 如何创建突出显示的搜索结果摘要 更多信息。

Whoosh2

改进

  • whoosh现在与python 3兼容(用python 3.2测试)。特别要感谢维尼·萨吉普,以及帮助解决后来问题的乔丹·谢勒。

  • 排序和分组(分面)现在使用“分面”对象的新系统,该系统比以前的基于字段的系统灵活得多。

    例如,按名字排序,然后按分数排序:

    from whoosh import sorting
    
    mf = sorting.MultiFacet([sorting.FieldFacet("firstname"),
                             sorting.ScoreFacet()])
    results = searcher.search(myquery, sortedby=mf)
    

    除了先前支持的按字段内容和/或查询结果排序/分组之外,现在还可以使用数字范围、日期范围、分数等。新的刻面系统还支持重叠组。

    (旧的“排序器”API仍然有效,但已弃用,在将来的版本中可能会被删除。)

    排序和分面 更多信息。

  • 完全修改了拼写检查,使其更快、更容易和更灵活。您可以使用 spelling=True 字段类型的参数:

    schema = fields.Schema(text=fields.TEXT(spelling=True))
    

    (拼写建议方法将在没有 spelling=True 但速度会变慢。)在添加新文档时,拼写图将自动更新——不再需要维护单独的“拼写索引”。

    您可以使用 whoosh.searching.Searcher.suggest() ::

    suglist = searcher.suggest("content", "werd", limit=3)
    

    现在,whoosh包含了拼写检查和更正用户查询的方便方法,还可以使用 whoosh.highlight 模块:

    from whoosh import highlight, qparser
    
    # User query string
    qstring = request.get("q")
    
    # Parse into query object
    parser = qparser.QueryParser("content", myindex.schema)
    qobject = parser.parse(qstring)
    
    results = searcher.search(qobject)
    
    if not results:
      correction = searcher.correct_query(gobject, gstring)
      # correction.query = corrected query object
      # correction.string = corrected query string
    
      # Format the corrected query string with HTML highlighting
      cstring = correction.format_string(highlight.HtmlFormatter())
    

    拼写建议可以来自字段内容和/或单词列表。对于词干字段,拼写建议自动使用单词的非词干形式。

    有一些用于拼写建议和查询更正的API,因此高度活跃的用户可以用更复杂的行为(例如,考虑上下文)代替默认值。

    “你是说……?“更正用户查询中的错误” 更多信息。

  • whoosh.query.FuzzyTerm 现在也使用了新的单词图表功能,因此速度更快。

  • 现在,您可以在索引单个文档时为其设置一个增强因子,以增加搜索中这些文档中的术语得分。参见文档了解 add_document() 更多信息。

  • 增加了哪些术语与哪些文档匹配的内置记录。使用 terms=True 参数 whoosh.searching.Searcher.search() 使用 whoosh.searching.Hit.matched_terms()whoosh.searching.Hit.contains_term() 检查匹配的条款。

  • whoosh现在支持整个术语的质量优化,例如,如果系统知道一个unionmatcher不可能贡献“前n个”结果,除非两个子匹配,它将用一个intersectionmatcher替换unionmatcher,后者计算速度更快。性能改进不如块质量优化显著,但可以注意到。

  • 修复了一个错误,该错误阻止了不在索引中的单词查询中的块质量优化,这可能严重降低性能。

  • 块质量优化现在使用实际的评分算法来计算块质量,而不是近似值,它修复了搜索结果的排序可能不同的问题,无论有没有优化。

  • 布尔字段类型现在支持字段提升。

  • 重新构造了查询分析器,使代码更容易理解。以前版本的自定义解析器插件可能会在whoosh 2.0中中断。

  • 各种错误修复和性能改进。

  • 移除了“读锁”,这导致了比它解决的问题更多的问题。现在,当打开读卡器时,如果段在打开时从读卡器下被删除,代码只会重试。

兼容性

  • 术语“质量优化”要求更改磁盘格式。如果向后兼容旧格式,则会发出 Whoosh 2.0。在使用whoosh 2.0重写索引时,默认情况下,它将为新段使用新格式,使索引与旧版本不兼容。

    要升级现有索引以立即使用新格式,请使用 Index.optimize() .

  • 删除了实验 TermTrackingCollector 因为它被新的内置术语记录功能所取代。

  • 删除了实验 Searcher.define_facets 功能,直到将来的版本,它将被一个更强大和有用的功能所取代。

  • 读卡器迭代方法( __iter__iter_fromiter_field 等等)现在生成 whoosh.reading.TermInfo 物体。

  • 类:`whoosh.query.FuzzyTerm`的参数已更改