{ "info": { "author": "Shane Hathaway", "author_email": "shane@hathawaymix.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: ZODB", "Intended Audience :: Developers", "License :: Repoze Public License", "Programming Language :: Python", "Topic :: Database" ], "description": "==================\nrepoze.pgtextindex\n==================\n\n``repoze.pgtextindex`` is an indexing plugin for ``repoze.catalog``\nthat provides a text search engine based on the powerful text indexing\ncapabilities of PostgreSQL 8.4 and above. It is designed to take the\nplace of any text search index based on ``zope.index``. Installation\ntypically requires few or no changes to code that already uses\n``repoze.catalog``.\n\nThe advantages of ``repoze.pgtextindex`` over ``zope.index.text``\ninclude:\n\n - Performance. For large datasets, ``repoze.pgtextindex`` can be\n orders of magnitude faster than ``zope.index``, mainly because\n ``repoze.pgtextindex`` does not have the overhead of unpickling\n objects that ``zope.index`` has.\n\n - Lower RAM consumption. Users of ``zope.index`` work around the\n unpickling overhead by keeping large caches of unpickled objects\n in RAM. Even worse, each thread keeps its own copy of the object\n cache. PostgreSQL, on the other hand, does not need to maintain\n complex structures in RAM. The PostgreSQL process size tends to\n be constant and reasonable.\n\n - Maintenance. The text indexing features of PostgreSQL are well\n documented and receive a great deal of active maintenance, while\n ``zope.index`` has not received much developer attention for\n years.\n\n``repoze.pgtextindex`` does not cause PostgreSQL to be involved in\nevery catalog query and update. Only operations that use or change the\ntext index hit PostgreSQL.\n\nUsage\n-----\n\n``repoze.pgtextindex`` is used just like any other index in\n``repoze.catalog``::\n\n from repoze.pgtextindex import PGTextIndex\n\n index = PGTextIndex(\n discriminator,\n dsn,\n table='pgtextindex',\n ts_config='english',\n drop_and_create=False,\n maxlen=1048575)\n\nThe arguments to the constructor are as follows:\n\n``discriminator``\n The ``repoze.catalog`` discriminator for this index. For more\n information on discriminators see the `repoze.catalog documentation`_.\n This argument is required.\n\n``dsn``\n The connection string for connecting to PostgreSQL. This argument is\n required.\n\n``table``\n The table to use for the index. The default is 'pgtextindex'.\n\n``ts_config``\n The PostgreSQL text search configuration to use for the index. The\n default is 'english' which is the default built in configuration which\n ships with PostgreSQL. For more information on text search\n configuration, see the `PostgreSQL full text search documentation`_.\n\n``drop_and_create``\n If `True` the table and index used will dropped (if it exists) and\n (re)created. The default is `False`.\n\n``maxlen``\n The maximum number of characters to index per document. The default is\n 1048575 (2**20 - 1), which is the maximum allowed by the to_tsvector\n function. Reduce this to improve query speed, since the\n ts_rank_cd function retrieves and decompresses entire TOAST tuples\n when querying.\n\n.. _`repoze.catalog documentation`: http://docs.repoze.org/catalog/\n\n.. _`PostgreSQL full text search documentation`: http://www.postgresql.org/docs/9.0/static/textsearch.html\n\n\n1.4 (2015-06-20)\n================\n\n- WeightedQueries can now be used as query result caches, making it\n possible to search the catalog many times while hitting the text\n index only once.\n\n- When a query generates a large number of results, pgtextindex now disables\n the expensive text ranking for that query. The max_ranked attribute\n controls the threshold for disabling ranking. The default max_ranked\n value is 6000.\n\n- Improved speed by using BTrees instead of Buckets and by using\n cursor.fetchall() instead of iter(cursor).\n\n\n1.3 (2014-09-03)\n================\n\n- Changed the 'marker' column to an array and changed the 'marker' attribute of\n 'IWeightedQuery' to accept either a single marker string or a sequence of\n marker strings. Since the database schema has changed, \n 'PGTextIndex.upgrade()' will need to be run on any indexes created with an \n older version of the code. (LP #1353483)\n\n\n1.2 (2012-10-09)\n================\n\n- Improved query speed by about 10% by duplicating the query parameter\n rather than joining with the query.\n\n- Added the maxlen option to allow a configurable document size limit.\n\n\n1.1 (2012-09-06)\n================\n\n- Handle concurrent index updates cleanly.\n\n\n1.0 (2012-09-01)\n================\n\n- Retry on IntegrityError to avoid meaningless errors.\n\n- Added metrics using the perfmetrics package.\n\n\n0.5 (2012-04-27)\n================\n\n- Switched to read committed isolation and removed explicit locking.\n The explicit locking was reducing write performance and may have been\n interfering with autovacuum. This change raises the probability\n of temporary inconsistency, but since this package did not provide\n ACID compliance anyway, developers already need to be prepared for\n temporary inconsistency.\n\n\n0.4 (2011-11-18)\n================\n\n- Truncate text to 1MB per document in order to stay under (silly) limit\n imposed by PostgreSQL.\n\n\n0.3 (2011-06-30)\n================\n\n- Fixed PostgreSQL ProgrammingError when query string contains a backslash\n character. (LP #798725)\n\n- Added ability to mark content with arbitrary markers which can be used as\n discriminators at query time. (LP #792334)\n\n- Support searches for words containing an apostrophe. (LP #801265)\n\n\n0.2 (2011-06-15)\n================\n\n- Reworked the scoring method: added a per-document score coefficient.\n The score coefficient can boost the score of documents known to be\n trustworthy.\n\n- Added the IWeightedText interface. The discriminator function can\n return an IWeightedText instance to control the weights and\n coefficient.\n\n- Added the IWeightedQuery interface. Text index queries can\n pass an IWeightedQuery instance to control the weight values.\n\n- Allow persistent objects to be indexed, since the usual objection\n (accidental ZODB references) does not apply.\n\n- Do not drop and create the table by default, making PGTextIndex\n easier to use outside ZODB.\n\n- Added the 'get_contextual_summaries' and 'get_contextual_summary'\n methods to the index.\n\n- Compatability with repoze.catalog 0.8.0.\n\n\n0.1 (2011-01-20)\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": "http://pypi.python.org/pypi/repoze.pgtextindex", "keywords": "repoze catalog ZODB PostgreSQL text index", "license": "BSD-derived (http://www.repoze.org/LICENSE.txt)", "maintainer": null, "maintainer_email": null, "name": "repoze.pgtextindex", "package_url": "https://pypi.org/project/repoze.pgtextindex/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/repoze.pgtextindex/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pypi.python.org/pypi/repoze.pgtextindex" }, "release_url": "https://pypi.org/project/repoze.pgtextindex/1.4/", "requires_dist": null, "requires_python": null, "summary": "Text index for repoze.catalog based on PostgreSQL 8.4+", "version": "1.4" }, "last_serial": 1600333, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "225606cb5618500da0a01b6f16ed4c2d", "sha256": "c365c90599fbd261a16e0bfc8cff6c49559967ec84ec60f113ee4d60fb10acc8" }, "downloads": -1, "filename": "repoze.pgtextindex-0.1.tar.gz", "has_sig": false, "md5_digest": "225606cb5618500da0a01b6f16ed4c2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17308, "upload_time": "2011-01-20T16:43:45", "url": "https://files.pythonhosted.org/packages/31/19/cb8c33b78e0b2860a36cdff1afac3abcfe8a643564786c476f6ae9109788/repoze.pgtextindex-0.1.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "f6e4beb7d3b1fcfc41cfb790f6c2b1e4", "sha256": "eb3328dbe76abecc679dea3d012c8af611582430cd1df16c21ae3f5b0fac5e4f" }, "downloads": -1, "filename": "repoze.pgtextindex-0.3.tar.gz", "has_sig": false, "md5_digest": "f6e4beb7d3b1fcfc41cfb790f6c2b1e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20281, "upload_time": "2011-06-30T10:55:06", "url": "https://files.pythonhosted.org/packages/96/ee/15f87cf5ec84b818cd018edcb9da3df25463a5d5a19ac269b32f0d7a046b/repoze.pgtextindex-0.3.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "8a5761f96c4c55fd8f6a5b029898159b", "sha256": "820db5616ec4f7b9cabf85aed7409eeb65e3c72032c9ebd256f5f84d211cce27" }, "downloads": -1, "filename": "repoze.pgtextindex-0.5.tar.gz", "has_sig": false, "md5_digest": "8a5761f96c4c55fd8f6a5b029898159b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20862, "upload_time": "2012-04-27T21:40:15", "url": "https://files.pythonhosted.org/packages/75/29/3c3253e2222710de8f6e47bac719f97422f7cd7725b4281bd5095251cdb1/repoze.pgtextindex-0.5.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "33ded6e693a5d310b604b34074d22d67", "sha256": "4a80cbfc88b84c81edc56b2e9031f3f0928589b1ac164ff1cd71b86429adc1dd" }, "downloads": -1, "filename": "repoze.pgtextindex-1.0.tar.gz", "has_sig": false, "md5_digest": "33ded6e693a5d310b604b34074d22d67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23456, "upload_time": "2012-09-01T09:15:56", "url": "https://files.pythonhosted.org/packages/90/f4/ca6eb47340d3c35f733cc949293491decfbde5b0bedf99edec2602a17530/repoze.pgtextindex-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "f171121c4f4288cbfbc951b7a7ef37ac", "sha256": "9f59987a80f638f7b03f859904f5fa4e5000068544a0c5fbfa4bf660e32de489" }, "downloads": -1, "filename": "repoze.pgtextindex-1.1.tar.gz", "has_sig": false, "md5_digest": "f171121c4f4288cbfbc951b7a7ef37ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24573, "upload_time": "2012-09-06T09:47:19", "url": "https://files.pythonhosted.org/packages/e4/f9/585666767ab94f2d93b2f77fa7af57127eba31b588dc1aca415c3db43cde/repoze.pgtextindex-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "06f843950f16284ca50f4799e223d8bf", "sha256": "f329a48e89a8d377637cbfaedf47d33d90c493309839eabb751e16e7054a0c06" }, "downloads": -1, "filename": "repoze.pgtextindex-1.2.tar.gz", "has_sig": false, "md5_digest": "06f843950f16284ca50f4799e223d8bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22751, "upload_time": "2012-10-09T19:54:09", "url": "https://files.pythonhosted.org/packages/3d/32/d9c7b4594dec2cd1fe0d1feadc4676ff08091208565efaa6b7341be53392/repoze.pgtextindex-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "c2355bb6f5b36523bc7d7243ec564b80", "sha256": "70243ac0b29b69796a4a92a338036422fa92c689a7780bead46dea49bedd7de1" }, "downloads": -1, "filename": "repoze.pgtextindex-1.3.tar.gz", "has_sig": false, "md5_digest": "c2355bb6f5b36523bc7d7243ec564b80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23131, "upload_time": "2014-09-04T00:10:59", "url": "https://files.pythonhosted.org/packages/36/4e/ec0be6ce0cd3506b9d1955605bd015641e634b9c64e7cb3ecaa2b7b1e1fe/repoze.pgtextindex-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "9135c89fa26a31126263b6ffaf0ee863", "sha256": "7b12c923197ed211a0d70b3153e7ff37cd0c3633fafb23edfcf58494d4b187c7" }, "downloads": -1, "filename": "repoze.pgtextindex-1.4.tar.gz", "has_sig": false, "md5_digest": "9135c89fa26a31126263b6ffaf0ee863", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25205, "upload_time": "2015-06-20T20:53:08", "url": "https://files.pythonhosted.org/packages/44/89/8975cf4ee466aeca5a29c3ada5591d8c1b3071d26315d97e7efa8de30ec5/repoze.pgtextindex-1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9135c89fa26a31126263b6ffaf0ee863", "sha256": "7b12c923197ed211a0d70b3153e7ff37cd0c3633fafb23edfcf58494d4b187c7" }, "downloads": -1, "filename": "repoze.pgtextindex-1.4.tar.gz", "has_sig": false, "md5_digest": "9135c89fa26a31126263b6ffaf0ee863", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25205, "upload_time": "2015-06-20T20:53:08", "url": "https://files.pythonhosted.org/packages/44/89/8975cf4ee466aeca5a29c3ada5591d8c1b3071d26315d97e7efa8de30ec5/repoze.pgtextindex-1.4.tar.gz" } ] }