{ "info": { "author": "ZeroDB", "author_email": "UNKNOWN", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Internet :: WWW/HTTP :: Indexing/Search" ], "description": "================\n zerodbext.catalog\n================\n\nA Python indexing and searching system based on `zope.index`_, fork of `repoze.catalog`_.\n\n.. _`zope.index`: https://pypi.python.org/pypi/zope.index\n.. _`repoze.catalog`: https://pypi.python.org/pypi/repoze.catalog\n\nImportant changes include dependency cleanup and Python3 support: thanks to micxjo\n\n\n0.8.4 (2016-03-12)\n==================\n\n- Forked from repoze.catalog\n\n- Python 3 support (by micxjo)\n\n- Depends on ZODB rather than ZODB3 (by micxjo)\n\n0.8.3 (2014-08-07)\n==================\n\n- Fix bug in query with names are None [ebrehault].\n\n- The 'numdocs' return value from 'Catalog.search' is now a subclass of integer\n with an added attribute, 'total', which gives the caller access to the total\n size of the result set before being limited by the 'limit' argument.\n\n0.8.2 (2012-04-15)\n==================\n\n- Fix docs rendering.\n\n- Add \"dev\" and \"docs\" aliases to setup.cfg.\n\n0.8.1 (2011-08-17)\n==================\n\n- Harmonized index name / discriminator in catalog setup with content schema\n and queries used in later examples. Thanks to Douglas Cerna.\n\n- Fixed semantics of 'applyEq' for the Keyword index. The 'applyEq' (and\n 'applyNotEq') methods now expect scalar values for the query. 'applyAny',\n 'applyAll' and their respective negations should be used to query multiple\n values.\n\n- Fixed bug in query parser where names inside of 'any' or 'all' calls were\n not being parsed properly.\n\n- When using CQEs, names may now be embedded inside of a list or tuple,\n allowing expressions like this: \"tags in any([tag1, tag2])\" where tag1 and\n tag2 are names that will be resolved at query run time.\n\n0.8.0 (2011-03-20)\n==================\n\n- Deprecated ``.search``-based querying of catalog in favor of newer\n query language(s) via ``.query``. See docs for more info.\n\n- Added a ``.docids()`` method to ``CatalogIndex``.\n\n- Deprecated ``repoze.catalog.index.path2.CatalogPathIndex2``.\n\n0.7.3 (2010-08-26)\n==================\n\nFeatures\n--------\n\n- Refuse to pickle instances of ``zodb.broken.Broken`` which are\n returned as the result of an index attempting to call a callable\n discriminator function. This prevents edge cases where instances\n with out-of-sync code could too easily write Broken objects to the\n database, leaving them around for the next hapless unpickler to\n find. This is particularly a problem because many of our\n discriminators are *functions*; the Broken machinery attempts to\n recover the state of a broken object when it is unpickled, but it\n cannot recover the state of an attempted function call.\n\n0.7.2 (2010-06-17)\n==================\n\nBug Fixes\n---------\n\n- Fix a bug which allowed the document map to map more than one docid\n onto the same address, which put the reverse and forward document\n map bookeeping out of sync with each other.\n\nPackaging\n---------\n\n- Move benchmark directory into root of distribution instead of\n leaving it in package. It interfered with normal operations of the\n setuptools testrunner.\n\n- Deactivate \"sortbench\" console script.\n\n- Remove \"Development Status\" Trove classifier.\n\n- Bump version to 0.7.2.\n\n- Disuse nose.collector as test_suite (use normal setuptools test runner).\n\n- Remove (unused) TODO.txt.\n\n- Disuse ez_setup.py.\n\n- Make docs render properly in Google Chrome.\n\nBackwards Incompatibilities\n---------------------------\n\n- When using ``DocumentMap.add`` with a ``docid`` argument that\n references an existing docid with metadata, that metadata is now\n removed. Previously it was retained.\n\n0.7.1 (2009-09-27)\n==================\n\n- Minimally get docs into shape for First PyPI release; no\n functionality changes from 0.7.0.\n\n0.7.0 (2009-08-03)\n==================\n\n- Fixed bug in ``DocumentMap.add`` which left orphan mappings for previous\n addresses when adding an existing docid with a new address.\n\n- Added the ability to sort by text relevance. Use the name of the text\n index as the ``sort_index`` in the query.\n\n0.6.2 (2009-04-15)\n==================\n\n- Add metadata-related APIs to ``repoze.catalog.document.DocumentMap``:\n ``add_metadata``, ``remove_metadata``, ``get_metadata``.\n \"Metadata\" is a freeform set of key/value pairs related to a docid.\n See the API documentation for more information.\n\n0.6.1 (2009-02-25)\n==================\n\n- Fixed constructor inheritance issues which kept ``repoze.catalog``\n from working under Python 2.6. Note that this change involved removing\n the ``*args, **kw`` arguments from index constructors: those values were\n never used, but had (bogus) tests.\n\n0.6.0 (2009-02-16)\n==================\n\n- N-Best ascending fieldindex sort was being chosen incorrectly when\n there was no limit. Symptom: ``RuntimeError, 'n-best used without\n limit'``.\n\n0.5.9 (2009-02-16)\n==================\n\n- Add ``reindex_doc`` method as an alias for ``index_doc`` to both\n CatalogFieldIndex and CatalogKeywordIndex (for performance,\n ``index_doc`` for both indexes has special case code for reindexing).\n\n0.5.8 (2009-02-16)\n==================\n\n- Speed up path2 index attribute search by using __getitem__ rather\n than .get in some places.\n\n- Override textindex reindex_doc method: calling index_doc only\n instead of calling unindex_doc and then index_doc is much more\n efficient.\n\n0.5.7 (2009-02-14)\n==================\n\n- Attributes returned to attribute checker were not correct.\n\n0.5.6 (2009-02-12)\n==================\n\n- Add \"attribute discriminator\" and \"attribute checker\" support to\n path2 index. If an index is created with an attribute\n discriminator, when any object is indexed, the value of the\n attribute will be stored in the path index. The path index will\n know that that attribute belongs to a particular path. Later, when\n the \"attribute checker\" feature of the ``apply`` or ``search``\n method is used, a user-supplied attribute checker function will be\n able to filter the result set returned by the index. This is used\n by the author primarily to support security-filtered searches of a\n path index. It is not otherwise documented.\n\n0.5.5 (2009-02-11)\n==================\n\n- Add a ``reindex_doc`` method to the catalog and to the ``common``\n shared index base class. The catalog's ``reindex_doc`` calls each\n index's ``reindex_doc`` method when called. The common shared index\n base class implementation unindexes the docid and then subsequently\n indexes the document using the docid. This method can be overridden\n for specific indexes to do something different on a reindex.\n\n- ``repoze.catalog.indexes.path2.CatalogPathIndex2`` now takes an\n extra argument to its search method named ``include_path``. If this\n is true, the docid set returned will include the docid for the path\n specified by the path query parameter. The ``apply`` method of the\n index allows for the specification of the ``include_path`` as a\n dictionary member in an ``apply`` call which specifies the query as\n a dictionary.\n\n- Give ``path2.CatalogPathIndex2`` index a better ``reindex_doc``\n method than the default.\n\n- The CatalogKeywordIndex's ``apply`` method mutated the query passed\n in if it was a dict. To fix, we override the ``apply`` method from\n the zope.index implementation.\n\n- Added a Range class importable as ``repoze.catalog.Range``. The\n Range class should be used to represent a range query to a\n CatalogFieldIndex. The old-style of passing a 2-tuple to represent\n a range is still supported, but will be eventually removed in favor\n of requring a Range object to represent a Range query. A Range\n object can be instantiated ala \"Range(start, end)\".\n\n- It is now possible to pass a sequence of items to the\n CatalogFieldIndex ``apply`` method. When a sequence of terms that\n is passed in is *not* a tuple with two items in it (the previous API\n representing a range, which is deprecated), it will be considered a\n query for multiple terms. The docids returned for each term will be\n unioned together to form the result.\n\n- It is now possible to pass a dictionary to the CatalogFieldIndex\n ``apply`` method. When a dictionary is passed, the member of the\n dictionary named ``query`` is treated as the query. It may be a\n single term, a sequence of terms, or a Range. An additional\n dictionary member named ``operator`` may also be specified: when\n this is specified, it must be one of ``or`` or ``and`` (the default\n is ``or``). If the query specifies multiple terms, and the operator\n is ``or``, the results will be unioned; if the query specifies\n multiple terms and the operator is ``and``, the results will be\n intersected.\n\n0.5.4 (2009-02-05)\n==================\n\nFeatures\n--------\n\n- A newer path index implementation importable as\n ``repoze.catalog.path2.CatalogPathIndex2`` has been added as another\n index type. The path2 index type is an improvement inasmuch as it\n actually uses a graph to represent structure instead of the \"levels\"\n scheme pioneered within Zope2 (and used by\n ``repoze.catalog.path.CatalogPathIndex``). By eye, the \"levels\"\n scheme looks like it can return the wrong results for any given path\n for a sufficiently dense tree.\n\n- Catalog indexes must now supply an ``apply_intersect`` method; it\n receives a query and a set of docids (the result intersection \"so\n far\"). It should have the same sort of return value as the\n ``apply`` method. Indexes which inherit from\n ``common.CatalogIndex`` will inherit a default implementation.\n\n- It is now possible to specify index query/merge order within a\n catalog query. See ``Index Query/Merge Order`` in the docs.\n\n0.5.3 (2009-01-05)\n==================\n\nFeatures\n--------\n\n- Better detection of when to use fwdscan on ascending sorts in field\n indexes.\n\n- Better detection of when to use nbest vs. timsort on ascending sorts\n in field indexes.\n\n0.5.2 (2009-01-04)\n==================\n\nFeatures\n--------\n\n- Allow a new catalog search method keyword: ``sort_type``. For\n ascending sorts, this can be one of ``nbest``, ``fwscan``, or\n ``timsort``. For descending sorts, only ``nbest`` and ``timsort``\n are supported. This argument allows fine-grained control of what\n algorithm should be chosen to perform sorting within FieldIndex\n code.\n\n- Better automatic detection of which sort algorithm to use (when it's\n not supplied via ``sort_type``) based on empirical testing.\n\n- Depend on zope.index 3.5.0 rather than any earlier version\n (repoze.catalog fixes migrated upstream in zope.index 3.5.0).\n\n - Add 'sortbench' script to test various field index sort strategies\n (requires 'benchmark' extra to create charts).\n\nBug Fixes\n---------\n\n- Prevent the potential for a zero division error when attempting to\n sort an empty set of results.\n\n0.5.1 (2008-12-31)\n==================\n\nFeatures\n--------\n\n- Optimize the choice of fieldindex sort strategy.\n\n- Speed up keyword index merges slightly.\n\n- Fix a bug in the return value of the catalog: it would try to return\n the minimum of the number of docs or the limit event if there was no\n limit.\n\nBug Fixes\n---------\n\n- Sean Upton pointed out that the document map code artificially\n limited the number of documents to half the number that it could\n actually handle.\n\n0.5 (2008-11-10)\n================\n\nFeatures\n--------\n\n- Add path index.\n\n- Speed up keyword index 'and' (intersection) queries nominally by\n sorting intersected sets from smallest-to-largest first.\n\n- Benchmarking suite provided by Chris Rossi.\n\n- Add a \"facet\" index\n (``repoze.catalog.indexes.facet.CatalogFacetIndex``). This index is\n much like a keyword index, but unlike a keyword index it contains a\n facet list (a sequence of known colon-separated values) and accepts\n values that are sequences of colon-separated terms. Each term is\n split on its colons, forming a sequence of categories, then each\n concatenation of the categories is indexed. For example, if you\n indexed a document as ``['style:gucci:handbag']``, and the facet\n list contained ``'style'``, ``'style:gucci'`` and\n ``'style:gucci:handbag'``, the document would be indexed three\n times: as ``style``, as ``style:gucci`` and as\n ``style:gucci:handbag``. Querying a facet index returns a set of\n document ids that match the facets passed in. A facet index also\n has a ``counts`` method which provided a set of document ids,\n returns a dictionary containing \"further constraint information\" for\n use in a narrowing UI. This count implementation is not meant for\n very large-scale sites; it is naive.\n\n0.4 (2008-10-06)\n================\n\nFeatures\n--------\n\n- Speed up keyword index 'or' (union) queries by using a single\n IFBTree.multiunion instead of multiple calls to IFBTree.union; this\n is most helpful for speeding up 'or' queries where there are lots of\n terms in the query sequence.\n\nDocumentation\n-------------\n\n- Add ``overview`` page.\n\n0.3 (2008-10-04)\n================\n\nFeatures\n--------\n\n- Add ``repoze.catalog.document.DocumentMap`` class, which provides a\n mechanism to map \"addresses\" (paths) to document ids.\n\nDocumentation\n-------------\n\n- Add API documentation for catalog and document map.\n\nBackwards incompatibilities\n---------------------------\n\n- Rename ``searchResults`` method to ``search``.\n\n- Removed ``updateIndex`` and ``updateIndexes`` methods of catalog.\n\n- All index implementations moved into ``repoze.catalog.indexes``.\n\n- All interfaces moved to ``repoze.catalog.interfaces``.\n\n0.2 (2008-09-26)\n================\n\n- Provide ``sort_index`` capability.\n\n0.1 (2008-07-26)\n================\n\n- Initial release.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "UNKNOWN", "keywords": "indexing catalog search", "license": "BSD-derived (http://www.repoze.org/LICENSE.txt)", "maintainer": null, "maintainer_email": null, "name": "zerodbext.catalog", "package_url": "https://pypi.org/project/zerodbext.catalog/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/zerodbext.catalog/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/zerodbext.catalog/0.8.4/", "requires_dist": null, "requires_python": null, "summary": "Searching and indexing based on zope.index. Fork of repoze.catalog", "version": "0.8.4" }, "last_serial": 2003597, "releases": { "0.8.4": [ { "comment_text": "", "digests": { "md5": "cf0539d0d0fa96a5d1f53c7f12c46570", "sha256": "3db5348b8aa8d1f734b610dccac3d743705203f5b3eb8286739dbd2af904f975" }, "downloads": -1, "filename": "zerodbext.catalog-0.8.4-py2-none-any.whl", "has_sig": false, "md5_digest": "cf0539d0d0fa96a5d1f53c7f12c46570", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 92538, "upload_time": "2016-03-12T22:06:20", "url": "https://files.pythonhosted.org/packages/bc/77/a97f316a76ef08c2eb6f040a09d6564f322bcbb9825b1a92a9e5f7295964/zerodbext.catalog-0.8.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb4141b55a4cd0db2212dfe868d8641f", "sha256": "752194ab6fb6d2336f63f188ccb3f6f9fdfecfcec94884dfab546b0380dee804" }, "downloads": -1, "filename": "zerodbext.catalog-0.8.4-py3-none-any.whl", "has_sig": false, "md5_digest": "fb4141b55a4cd0db2212dfe868d8641f", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 92538, "upload_time": "2016-03-12T22:20:33", "url": "https://files.pythonhosted.org/packages/13/61/23907290cf131cc9fc103125d6dfd1eb0091ce857627771be0d049728796/zerodbext.catalog-0.8.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9a942a24130b1df1cd672143dde6a35b", "sha256": "b47e76cdb72e78cadc20b4e28e22187dde164e91018ffef85af07bfb0100a3c2" }, "downloads": -1, "filename": "zerodbext.catalog-0.8.4.tar.gz", "has_sig": false, "md5_digest": "9a942a24130b1df1cd672143dde6a35b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 104503, "upload_time": "2016-03-12T22:05:46", "url": "https://files.pythonhosted.org/packages/98/e1/057a24b895c64d0e64c5f0330493b7dfee40de608a95d24f677c7c5e6005/zerodbext.catalog-0.8.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cf0539d0d0fa96a5d1f53c7f12c46570", "sha256": "3db5348b8aa8d1f734b610dccac3d743705203f5b3eb8286739dbd2af904f975" }, "downloads": -1, "filename": "zerodbext.catalog-0.8.4-py2-none-any.whl", "has_sig": false, "md5_digest": "cf0539d0d0fa96a5d1f53c7f12c46570", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 92538, "upload_time": "2016-03-12T22:06:20", "url": "https://files.pythonhosted.org/packages/bc/77/a97f316a76ef08c2eb6f040a09d6564f322bcbb9825b1a92a9e5f7295964/zerodbext.catalog-0.8.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb4141b55a4cd0db2212dfe868d8641f", "sha256": "752194ab6fb6d2336f63f188ccb3f6f9fdfecfcec94884dfab546b0380dee804" }, "downloads": -1, "filename": "zerodbext.catalog-0.8.4-py3-none-any.whl", "has_sig": false, "md5_digest": "fb4141b55a4cd0db2212dfe868d8641f", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 92538, "upload_time": "2016-03-12T22:20:33", "url": "https://files.pythonhosted.org/packages/13/61/23907290cf131cc9fc103125d6dfd1eb0091ce857627771be0d049728796/zerodbext.catalog-0.8.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9a942a24130b1df1cd672143dde6a35b", "sha256": "b47e76cdb72e78cadc20b4e28e22187dde164e91018ffef85af07bfb0100a3c2" }, "downloads": -1, "filename": "zerodbext.catalog-0.8.4.tar.gz", "has_sig": false, "md5_digest": "9a942a24130b1df1cd672143dde6a35b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 104503, "upload_time": "2016-03-12T22:05:46", "url": "https://files.pythonhosted.org/packages/98/e1/057a24b895c64d0e64c5f0330493b7dfee40de608a95d24f677c7c5e6005/zerodbext.catalog-0.8.4.tar.gz" } ] }