Python搜索和索引包
项目描述
一个Python索引和搜索系统。
有关更多信息,请访问http://github.com/Pylons/hypatia,因为此包处于alpha开发阶段。
0.4 (2022-04-23)
放弃(未发布)对Python 3.3和Python 3.4的支持(持久化包不再支持这些版本)。
放弃(未发布)对Python 3.5的支持(构建正确太困难——即使使用pyenv——也不值得)。
放弃(发布)对Python 2.6和3.2的支持。
添加对Python 3.6、3.7、3.8、3.9、3.10的支持(感谢Thierry Florac)。
在tox.ini中使用pytest代替python setup.py test -q。
更改测试中跨版本覆盖率的计算方式。
删除未使用的hypatia/text/ricecode.py文件。
略微改变文档构建方式以应对修改后的github协议。新版本的Sphinx出现了一些警告,我还没有将它们转换为错误,因为我还没有弄懂它们。
在优化And或Or时不要修改查询属性,而是返回一个新的实例。此更改需要打开新的优化可能性,例如分解。
修复比较器 __eq__ 方法,使其包括类型比较,例如,之前 NotAny(‘index’,[1]) 等于 Any(‘index’,[1])。
0.3 (2014-06-12)
依赖于 ZODB 包而不是 ZODB3 包。前者是较新的 ZODB 包,意味着 ZODB4。如果您确实需要 ZODB v3,则需要将 hypatia 锁定到较旧版本。您应该知道,目前 ZODB3 的最新版本(3.11)实际上意味着 ZODB v4(我知道这并不完全明显,但 Jim 确信我),所以如果您确实需要 ZODB v3,您需要将 ZODB3 锁定在 3.11 以下,并将 hypatia 锁定在该版本以下。
关键字索引现在具有类似于字段索引的 unique_values 方法。
调用 hypatia.util.ResultSet.first() 和 hypatia.util.ResultSet.one() 现在是幂等的。再次调用它将返回相同的值,并且调用它不会影响结果集的可迭代性(它将从零开始)。
0.2 (2014-05-16)
现在通过方法查询对象进行交集和并集操作,而不是将交集/并集逻辑嵌入到 And 和 Or 查询对象中。这使得在与其他查询结果结合时可以创建不同的交集和/或并集查询对象类型。
0.1 (2014-02-09)
修复 Sphinx 文档中的一个错误,导致 intersphinx 引用失败。
0.1a7 (2013-10-08)
将 unique_values API 添加到字段索引。
有时在深度嵌套布尔操作(如 And 和 Or)时,无法找到 index 属性来解析结果集。请参阅 https://github.com/Pylons/hypatia/pull/5
当使用没有任何 docids 的字段索引作为排序索引且 raise_unsortable 为 True 时,正确抛出 Unsortable。
0.1a6 (2013-05-30)
将 check_query 方法添加到文本索引,以允许检查搜索词是否可解析。
0.1a5 (2013-05-06)
添加了对 Python 3.2 / 3.3 的支持。
修复 TextIndex.sort 的签名(例如,当传递 raise_unsortable 时将失败)。
向 IIndexSort.sort 和 IResultSet.sort 方法添加 sort_type 关键字参数。此值可以通过调用代码传递来控制使用的排序类型。
添加两个常量:hypatia.interfaces.STABLE 和 hypatia.interfaces.OPTIMAL。这些可以作为显式参数传递给 IIndexSort.sort 和 IResultSet.sort 的 sort_type 参数,以控制排序的稳定性。
IResultSet 的构造函数现在接受 sort_type 关键字参数。
IResultSet.sort 构造的结果集将在其构造函数中传递 hypatia.interfaces.STABLE 值,以确保结果集的第二次和后续排序将以稳定的排序方式完成,除非向第二次排序显式传递 sort_type 值。
0.1a4 (2013-04-28)
添加 IResultSet 接口定义。
标准化 IIndexSort.sort 和 IResultSet.sort 的关键字参数顺序。
在IIndexSort.sort和IResultSet.sort方法中添加一个参数raise_unsortable。默认值为True。这意味着当传入的docids成员无法通过用于排序的索引进行排序时(例如,docid的值不在索引中),迭代这些方法返回的结果可能会抛出hypatia.exc.Unsortable异常。默认值为True,这改变了索引的默认行为。要恢复旧默认行为,请为此值传递False。或者,可以编写如下代码:
from hypatia.exc import Unsortable ids = [] results = resultset.sort(someindex) try: for id in results: ids.append(id) except Unsortable as e: unsorted = e.docids ids.extend(unsorted)
0.1a3 (2013-01-10)
优化在字段和关键词索引中返回默认值时的index_doc实现。
从hypatia.path中删除代码。此包不再支持PathIndex。
删除interfaces.IIndexQuery接口。因为它从未相关,因为无法期望索引实现其所有方法,而只是与每个索引相关的方法。
BaseIndexMixin不再提供引发NotImplementedError的applyFoo方法的默认实现。现在每个索引都负责实现其所有自己的applyFoo方法。这是为了与新的查询方法(如eq)保持一致,这些方法在基类中也没有实现。
索引现在必须实现一个qname方法,以便查询使用。
DoesNotContain查询重命名为NotContains,以与其他否定查询名称保持对称。
新增索引方法:eq、noteq、ge、le、lt、gt、any、notany、all、notall、inrange、notinrange、contains、notcontains。这些方法返回查询对象。例如:
catalog['flavors'].eq('peach')
查询对象内部重构以处理索引对象而不是索引名称。
现在query.parse_query函数需要一个catalog参数。
查询对象现在提供了一个返回ResultSet的execute方法。
从.execute返回ResultSet对象。它们代表一组docids;它们是可迭代的,并有各种方法用于获取单个对象(如one、first)和排序(sort)。
所有Query对象现在都有一个接受任意位置和关键字参数的flush方法。调用查询对象的flush方法将导致参与查询的所有索引的flush方法使用与Query.flush传递的相同位置和关键字参数的值。这是为了支持Substance D上游,它可能需要在查询发生之前刷新索引。
为所有索引添加一个接受docid并返回该索引对该docid的了解的字符串表示的document_repr方法。
0.1a2 (2012-07-02)
此版本的代码与0.1a1版本生成的索引不兼容。没有升级脚本。如果你使用版本号为0.1a1的软件并期望向后兼容,那真是太遗憾了。
添加用于根据索引值对外部docids集进行排序的API hypatia.catalog.CatalogQuery.sort。
添加必须由所有索引支持的接口IIndexEnumeration。这隐含了以下向后不兼容性
新接口方法:docids、docids_count、indexed、indexed_count、not_indexed和not_indexed_count。
documentCount 方法重命名为 indexed_count。
wordCount 方法重命名为 word_count。
删除未使用的 INBest 接口。
IIndexInjection 接口的 clear 方法重命名为 reset,以防止与字典的 clear 方法混淆(目录通常类似于字典)。将 Catalog 的 clear_indexes 方法替换为 reset。
0.1a1
首次发布:从 repoze.catalog 和 zope.index 分支合并。
项目详情
hypatia-0.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fd203c4bd89e48406670c3be83bfb258de7e19763a4daeb2f4dab6bf4eba7861 |
|
MD5 | 28de8ada083e7ff503c51db8a8cb07af |
|
BLAKE2b-256 | b031c902c2b3541dbe3f4cb1498ccd411c74dec64f0f688ac50af4e8db2f25b8 |