基于zope.index的搜索和索引
项目描述
一个基于 zope.index 的 Python 索引和搜索系统。
请参阅 docs 子目录中的文档或 在线文档。
弃用
此项目仅处于维护模式。
Hypatia 是其继任者。 repoze.catalog 是 Hypatia 的早期版本,是此处工作的延续。
“在绿色项目中没有理由使用 repoze.catalog。”
——Chris McDonough
0.9.0 (2019-03-07)
添加 Travis CI 支持。
放弃对 Python 2.6 的支持。
Python 3 兼容
添加对 Python 3.6 - 3.7 的支持 [vangheem, agitator, jensens]
0.8.3 (2014-08-07)
修复了查询名称为 None 的查询中的错误 [ebrehault]。
现在,“Catalog.search”返回的“numdocs”是整数子类,具有添加的属性“total”,它允许调用者访问在“limit”参数限制之前的结果集的总大小。
0.8.2 (2012-04-15)
修复了文档渲染错误。
将“dev”和“docs”别名添加到 setup.cfg。
0.8.1 (2011-08-17)
在目录设置中与内容模式和后续示例中使用的查询和谐化索引名称/区分符。感谢 Douglas Cerna。
修复了关键字索引中“applyEq”的语义。现在,“applyEq”(以及“applyNotEq”)方法期望查询的标量值。应使用“applyAny”,“applyAll”及其各自的否定来查询多个值。
修复了查询解析器中的错误,其中“any”或“all”调用内的名称未正确解析。
在使用 CQEs 时,现在可以在列表或元组内嵌入名称,允许以下表达式:“tags in any([tag1, tag2])”,其中 tag1 和 tag2 是在查询运行时解决的名称。
0.8.0 (2011-03-20)
弃用基于 .search 的目录查询,转而使用通过 .query 的较新查询语言。有关更多信息,请参阅文档。
向 CatalogIndex 添加了 .docids() 方法。
弃用 repoze.catalog.index.path2.CatalogPathIndex2。
0.7.3 (2010-08-26)
功能
拒绝将索引尝试调用可调用区分函数返回的 zodb.broken.Broken 实例序列化。这防止了具有不同步代码的实例太容易将 Broken 对象写入数据库,留给下一个不幸的反序列化器找到。这尤其是一个问题,因为我们的许多区分器都是 函数;Broken 机制试图在反序列化时恢复已损坏对象的状态,但它无法恢复尝试函数调用的状态。
0.7.2 (2010-06-17)
错误修复
修复了一个错误,该错误允许文档映射将多个 docid 映射到同一地址,这使得反向和正向文档映射簿簿保持不同步。
打包
将基准目录移动到分发根目录,而不是将其留在包中。它干扰了 setuptools 测试运行器的正常操作。
停用“sortbench”控制台脚本。
移除“开发状态”Trove分类器。
将版本提升到 0.7.2。
弃用 nose.collector 作为 test_suite(使用正常的 setuptools 测试运行器)。
移除(未使用)TODO.txt。
弃用 ez_setup.py。
确保文档在 Google Chrome 中正确渲染。
向后不兼容性
当使用具有引用现有 docid 和元数据的 docid 参数的 DocumentMap.add 时,现在将移除该元数据。以前则保留。
0.7.1 (2009-09-27)
将文档最小化地调整以进行第一次PyPI发布;与0.7.0版本相比,没有功能上的变化。
0.7.0 (2009-08-03)
修复了在添加现有docid和新的地址时,在DocumentMap.add中留下孤岛映射的bug。
添加了按文本相关性排序的能力。在查询中使用文本索引的名称作为sort_index。
0.6.2 (2009-04-15)
向repoze.catalog.document.DocumentMap添加与元数据相关的API:add_metadata、remove_metadata、get_metadata。“元数据”是与docid相关的自由形式键/值对集合。有关更多信息,请参阅API文档。
0.6.1 (2009-02-25)
修复了构造函数继承问题,这使得repoze.catalog在Python 2.6下无法工作。请注意,此更改涉及从索引构造函数中删除*args, **kw参数:这些值从未使用过,但有(虚假的)测试。
0.6.0 (2009-02-16)
在没有限制的情况下,N-Best升序字段索引排序被错误地选择。症状:RuntimeError, 'n-best used without limit'。
0.5.9 (2009-02-16)
将reindex_doc方法作为index_doc的别名添加到CatalogFieldIndex和CatalogKeywordIndex中(为了性能,两个索引的index_doc都具有重新索引的特殊情况代码)。
0.5.8 (2009-02-16)
通过在某些地方使用__getitem__而不是.get来加快path2索引属性搜索。
覆盖textindex的reindex_doc方法:仅调用index_doc而不是先调用unindex_doc然后调用index_doc要高效得多。
0.5.7 (2009-02-14)
返回给属性检查器的属性不正确。
0.5.6 (2009-02-12)
将“属性区分器”和“属性检查器”支持添加到path2索引中。如果使用属性区分器创建索引,则在索引任何对象时,属性值将存储在路径索引中。路径索引将知道该属性属于特定路径。稍后,当使用apply或search方法的“属性检查器”功能时,用户提供的属性检查器函数将能够过滤索引返回的结果集。作者主要使用此功能来支持路径索引的安全过滤搜索。此功能未在其他文档中记录。
0.5.5 (2009-02-11)
向目录和common共享索引基类添加reindex_doc方法。目录的reindex_doc调用时将调用每个索引的reindex_doc方法。公共共享索引基类的实现先取消索引docid,然后使用docid重新索引文档。此方法可以覆盖特定索引以在重新索引时执行不同的操作。
repoze.catalog.indexes.path2.CatalogPathIndex2现在为其搜索方法提供了一个名为include_path的额外参数。如果是true,则返回的docid集合将包括由路径查询参数指定的路径的docid。索引的apply方法允许在指定为字典的查询中指定include_path作为字典成员。
为path2.CatalogPathIndex2索引提供一个比默认更好的reindex_doc方法。
目录关键字索引的apply方法会修改传入的查询,如果它是字典。为了修复此问题,我们覆盖了来自zope.index实现的apply方法。
添加了一个可导入为repoze.catalog.Range的Range类。Range类应用于表示对CatalogFieldIndex的范围查询。仍然支持使用2元组表示范围的老式方法,但最终将删除,以要求使用Range对象来表示范围查询。Range对象可以像“Range(start, end)”一样实例化。
现在可以向 CatalogFieldIndex 的 apply 方法传递一系列项目。当传递的术语序列 不是 包含两个项目的元组(之前的 API 表示范围,现已弃用)时,它将被视为对多个术语的查询。每个术语返回的 docid 将被合并以形成结果。
现在可以向 CatalogFieldIndex 的 apply 方法传递字典。当传递字典时,字典中名为 query 的成员被视为查询。它可能是一个单个术语、一系列术语或范围。还可以指定名为 operator 的额外字典成员:当指定此成员时,它必须是 or 或 and 之一(默认为 or)。如果查询指定了多个术语,并且运算符是 or,则结果将合并;如果查询指定了多个术语,并且运算符是 and,则结果将相交。
0.5.4 (2009-02-05)
功能
添加了一个新的路径索引实现,可以导入为 repoze.catalog.path2.CatalogPathIndex2,作为另一种索引类型。与 Zope2 内部首创的“级别”方案(由 repoze.catalog.path.CatalogPathIndex 使用)相比,path2 索引类型是一种改进,因为它实际上使用一个图来表示结构,而不是“级别”方案。直观上看,“级别”方案可能对足够密集的树在任何给定路径上返回错误的结果。
目录索引必须现在提供一个 apply_intersect 方法;它接收一个查询和一组 docid(迄今为止的结果交集)。它应该有与 apply 方法相同的返回值。从 common.CatalogIndex 继承的索引将继承默认实现。
现在可以在目录查询中指定索引查询/合并顺序。请参阅文档中的 Index Query/Merge Order。
0.5.3 (2009-01-05)
功能
更好地检测在字段索引的升序排序中何时使用 fwdscan。
更好地检测在字段索引的升序排序中何时使用 nbest 与 timsort。
0.5.2 (2009-01-04)
功能
允许一个新的目录搜索方法关键字:sort_type。对于升序排序,这可以是 nbest、fwscan 或 timsort 之一。对于降序排序,仅支持 nbest 和 timsort。此参数允许对 FieldIndex 代码中执行排序的算法进行细粒度控制。
根据经验测试,更好地自动检测应使用哪种排序算法(当未通过 sort_type 提供时)。
依赖于 zope.index 3.5.0 而不是任何更早的版本(repoze.catalog 修复已迁移至 zope.index 3.5.0)。
添加“sortbench”脚本来测试各种字段索引排序策略(需要创建图表的“benchmark”额外功能)。
错误修复
防止在尝试对一个空结果集进行排序时出现零除错误。
0.5.1 (2008-12-31)
功能
优化字段索引排序策略的选择。
略微加快关键字索引合并的速度。
修复了目录返回值中的错误:如果没有限制,它会尝试返回文档数的最小值或限制事件。
错误修复
Sean Upton 指出,文档映射代码人为地将文档数限制为实际能处理的一半。
0.5 (2008-11-10)
功能
添加路径索引。
通过首先按从小到大的顺序对相交的集合进行排序,名义上加快关键字索引“and”(交集)查询的速度。
由 Chris Rossi 提供的基准测试套件。
添加一个“分面”索引(repoze.catalog.indexes.facet.CatalogFacetIndex)。这个索引与关键词索引类似,但不同之处在于它包含一个分面列表(一系列以冒号分隔的已知值)并接受以冒号分隔的术语序列作为值。每个术语在冒号处分割,形成一个分类序列,然后对每个分类的组合进行索引。例如,如果您将文档索引为 ['style:gucci:handbag'],并且分面列表包含 'style'、'style:gucci' 和 'style:gucci:handbag',则文档将被索引三次:作为 style、作为 style:gucci 和作为 style:gucci:handbag。查询分面索引返回与传入的分面相匹配的文档 ID 集合。分面索引还有一个 counts 方法,该方法为文档 ID 集合提供包含“进一步约束信息”的字典,用于在缩小 UI 中使用。此计数实现不适用于非常大的站点;它是直观的。
0.4 (2008-10-06)
功能
通过使用单个 IFBTree.multiunion 而不是多次调用 IFBTree.union 来加快关键词索引“或”(并集)查询;这对于加快查询序列中有许多术语的“或”查询非常有用。
文档
添加 概述 页面。
0.3 (2008-10-04)
功能
添加 repoze.catalog.document.DocumentMap 类,它提供了一种将“地址”(路径)映射到文档 ID 的机制。
文档
为目录和文档映射添加 API 文档。
向后不兼容性
将 searchResults 方法重命名为 search。
移除了目录的 updateIndex 和 updateIndexes 方法。
所有索引实现都移动到 repoze.catalog.indexes。
所有接口都移动到 repoze.catalog.interfaces。
0.2 (2008-09-26)
提供 sort_index 功能。
0.1 (2008-07-26)
初始发布。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源分发
构建分发
repoze.catalog-0.9.0.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 7760813dac15128a55016a8367c87a2c6045aafdc8137aa72ea01dc36d442728 |
|
MD5 | 8057746b6a82febd4d6c1c0bab99e55c |
|
BLAKE2b-256 | 914212833c4a1f0f546b9acfc95318d23c0fc5ece9bd318dae5c9fa339c0340b |