{ "info": { "author": "Naoya Inada", "author_email": "naoina@kuune.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP :: Indexing/Search", "Topic :: Software Development :: Libraries" ], "description": "pyroonga |travis-ci-status|_\n============================\n\nWhat's this?\n------------\n\nPython interface for `groonga `_ fulltext search engine.\n\nRequirements\n------------\n\n- Python 2.6 or 3.x and later\n- groonga\n\nInstallation\n------------\n\nfrom pypi::\n\n % pip install pyroonga\n\nfrom source::\n\n % python setup.py install\n\nUsage\n-----\n\nFirst, Please run ``groonga`` by server mode or daemon mode. see following::\n\n # server mode\n % groonga -s DB_PATH_NAME\n\n # daemon mode\n % groonga -d DB_PATH_NAME\n\nSee ``groonga --help`` for more options.\n\nCreate Table\n^^^^^^^^^^^^\n\n::\n\n from pyroonga import tablebase, Column, Groonga\n\n # create the base class for table definition.\n Table = tablebase()\n\n # define the table\n class Site(Table):\n title = Column()\n name = Column()\n\n class Blog(Table):\n entry = Column()\n\n # create and bind the groonga connection object\n grn = Groonga()\n Table.bind(grn)\n\n # create the all table on groonga's database\n Table.create_all()\n\nData loading\n^^^^^^^^^^^^\n\n::\n\n data = [Site(_key='key1', title='foo', name='hoge'),\n Site(_key='key2', title='bar', name='fuga'),\n Site(_key='key3', title='baz', name='piyo'),\n Site(_key='key4', title='qux', name='xyzzy')]\n\n Site.load(data)\n\nThe example above is load the data to groonga immediately.\nAlso pseudo commit and rollback are supported::\n\n data1 = [Site(_key='key5', title='Constellation', name='Sagittarius'),\n Site(_key='key6', title='Constellation', name='Pisces')]\n\n # first load, but not load to groonga actually\n data = Site.load(data1, immediate=False)\n\n data2 = [Site(_key='key7', title='Constellation', name='Aquarius')]\n data.load(data2) # same as previous\n\n # load data to groonga actually\n data.commit()\n\nOr reset loaded data::\n\n data.rollback()\n\nNote that loaded data reset is only if set ``immediate=False``\\ .\n\nQuery and get data as a mapped object\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nGet the all data from ``Site`` table::\n\n data = Site.select().all()\n\nAnd print the data::\n\n for row in data:\n print(row._id, row._key, row.title)\n\nFulltext search queries::\n\n Site.select().match_columns(Site.title).query('foo').all()\n Site.select().match_columns(Site.title, Site.name).query('bar').all()\n\nThe above example is same as following queries::\n\n select --table Site --match_columns 'title' --query \"foo\"\n select --table Site --match_columns 'title OR name' --query \"bar\"\n\nFor more complex queries using `pyroonga.odm.GE`::\n\n from pyroonga.odm import GE\n\n Site.select().match_columns(Site.title).query(GE('foo') | GE('bar')).all()\n\nThe above example is same as following query::\n\n select --table Site --match_columns 'title' --query \"(foo OR bar)\"\n\nAnd also not use `match_columns`::\n\n Site.select(title='foo').all()\n Site.select(title='foo', name='bar').all() # \"or\" search\n\nThe above example is same as following queries::\n\n select --table Site --query \"(title:@\\\"foo\\\")\"\n select --table Site --query \"(title:@\\\"foo\\\" OR name:@\\\"bar\\\")\"\n\nConditional search query::\n\n Site.select(Site.title == 'bar').all()\n\nConbination for a condition::\n\n Site.select((Site._id > 3) & (Site.title == 'baz')).all()\n\nLimit and offset::\n\n Site.select().limit(3).offset(2).all()\n\nSortby::\n\n Site.select().sortby(Site._id).all() # asc\n Site.select().sortby(-Site._id).all() # desc\n\nSelect the output columns::\n\n # get the title and name columns\n Site.select().output_columns(Site.title, Site.name).all()\n\n # get the all columns\n Site.select().output_columns(Site.ALL).all()\n\nDrilldown\n\"\"\"\"\"\"\"\"\"\n\nSwitch to the drilldown query after the call of drilldown() from select() method chain::\n\n data = Site.select().sortby(Site._key).drilldown(Site.title).all()\n\nResult of drilldown will be stored to the ``drilldown`` attribute of the return value from all() method::\n\n for drilldown in data.drilldown:\n print(drilldown._key, drilldown._nsubrecs)\n\nA ``sortby()`` method in example above, It is query option of ``--sortby``\\ .\nFor sortby of drilldown, Please call of ``sortby()`` method after the call of ``drilldown()`` method::\n\n Site.select().drilldown(Site.title).sortby(Site._key).all()\n\nA ``sortby()`` method in example above, It is query option of ``--drilldown_sortby``\\ .\nOf course, As well as ``limit()`` , ``offset()`` and ``output_columns()`` methods.\n\nSuggest\n^^^^^^^\n\n**N.B.** The Groonga's suggest feature is still in draft.\n\nFirst, Create table if still not created::\n\n from pyroonga import SuggestTable\n\n grn = Groonga()\n SuggestTable.bind(grn)\n SuggestTable.create_all()\n\nSecond, Data loading::\n\n import time\n from pyroonga import event_query\n\n data = [event_query(time=time.time(), sequence=1, item='e'),\n event_query(time=time.time(), sequence=1, item='en'),\n event_query(time=time.time(), sequence=1, item='eng'),\n event_query(time=time.time(), sequence=1, item='engi'),\n event_query(time=time.time(), sequence=1, item='engin'),\n event_query(time=time.time(), sequence=1, item='engine', type='submit')]\n event_query.load(data)\n\nFinally, Querying::\n\n from pyroonga import item_query, SuggestType\n\n query = 'en'\n result = item_query.suggest(query).types(SuggestType.complete). \\\n frequency_threshold(1).all()\n for r in result.complete:\n print(\"key is '%s', score is %s\" % (r._key, r._score))\n\nSee also http://groonga.org/docs/suggest.html\n\nMore information\n^^^^^^^^^^^^^^^^\n\nStill not written.\n\nSee also\n--------\n\nhttp://groonga.org/ (Japanese: http://groonga.org/ja/ )\n\nLICENSE\n-------\n\npyroonga is licensed under the MIT license.\n\n.. |travis-ci-status| image:: https://travis-ci.org/naoina/pyroonga.png?branch=master\n.. _`travis-ci-status`: https://travis-ci.org/naoina/pyroonga\n\n\nChangelog\n---------\n\nv0.5.2 (2013-09-17)\n^^^^^^^^^^^^^^^^^^^\n\n- Multibyte support\n- Add 'filter' API\n- Some changes\n\nv0.5.1 (2013-08-17)\n^^^^^^^^^^^^^^^^^^^\n\n- More support the queries of Groonga\n- Add ``GroongaRecord`` and use to mapping it instead of Table sub-class\n- Host and port for connect to Groonga can now specify by constructor of ``pyroonga.Groonga``\n\nv0.5 (2013-07-30)\n^^^^^^^^^^^^^^^^^\n\n- Change package name from `pyroonga.orm` to `pyroonga.odm` (**Note that incompatible with old releases**)\n- Add `match_columns` and `query` API\n- Change license to MIT\n- Fix `issues#2 `_\n\nv0.4 (2012-03-28)\n^^^^^^^^^^^^^^^^^\n\n- Add suggest\n\nv0.3 (2012-02-17)\n^^^^^^^^^^^^^^^^^\n\n- Add load the data to groonga\n\nv0.2 (2012-02-17)\n^^^^^^^^^^^^^^^^^\n\n- Add ORM\n- Add documentation of basic usage\n\nv0.1 (2012-02-05)\n^^^^^^^^^^^^^^^^^\n\n- First release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/naoina/pyroonga", "keywords": "groonga fulltext search engine", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "pyroonga", "package_url": "https://pypi.org/project/pyroonga/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pyroonga/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/naoina/pyroonga" }, "release_url": "https://pypi.org/project/pyroonga/0.5.2/", "requires_dist": null, "requires_python": null, "summary": "Python interface for groonga", "version": "0.5.2" }, "last_serial": 867429, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "9afb753cab280d7622e4bdfe9e002550", "sha256": "384fe82c27384a9c0faaa6a3b2ee1ef1472596479c4cbaf7a5ffc6b3e1c0ad1c" }, "downloads": -1, "filename": "pyroonga-0.1.tar.gz", "has_sig": false, "md5_digest": "9afb753cab280d7622e4bdfe9e002550", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7702, "upload_time": "2012-02-05T13:23:48", "url": "https://files.pythonhosted.org/packages/c2/45/fde63cebe21da1dd9fbc763c0295a35c96414c623e0b43ce2098cca5d526/pyroonga-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "39d3e32242e52b83026e5ec170a2f93d", "sha256": "0d6d23a5cd1398381d10dd5fddadeff6eb23158bb5c3d62e2a8799182a30d457" }, "downloads": -1, "filename": "pyroonga-0.2.tar.gz", "has_sig": false, "md5_digest": "39d3e32242e52b83026e5ec170a2f93d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19697, "upload_time": "2012-02-16T17:27:38", "url": "https://files.pythonhosted.org/packages/ed/96/44446d12f508b5a6315357bb24909e697ef1c4d7ed1cac4e554ae20a5c67/pyroonga-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "e5ec52f3ef3bad2fe1b3f3589391254c", "sha256": "ede378fdbbc43a110a832287018a9e4ec34125cc4638309f7f6ba01f2b2fda73" }, "downloads": -1, "filename": "pyroonga-0.3.tar.gz", "has_sig": false, "md5_digest": "e5ec52f3ef3bad2fe1b3f3589391254c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22650, "upload_time": "2012-02-17T06:52:57", "url": "https://files.pythonhosted.org/packages/4b/7a/0e068d1a54c0d89e34c63384932ab91cbe62c47e8392751b9ae029e89dd0/pyroonga-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "a73cad256b88d6688fefd9d485f78ee3", "sha256": "e3feec9d5e8c31555e66990d8ca766ed3994b7121845889c4168f183c1657902" }, "downloads": -1, "filename": "pyroonga-0.4.tar.gz", "has_sig": false, "md5_digest": "a73cad256b88d6688fefd9d485f78ee3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27233, "upload_time": "2012-03-28T03:30:47", "url": "https://files.pythonhosted.org/packages/d4/69/1cdcf7ca184419ea682c4dab18e0860278080cba649a81b4c3db75af57f1/pyroonga-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "f9ecc095f43b34f56302b2db861566b4", "sha256": "07a5292ba8cea07f291da4a3ac3036482d3276bb805489ddcf5394063bbb3938" }, "downloads": -1, "filename": "pyroonga-0.5.tar.gz", "has_sig": false, "md5_digest": "f9ecc095f43b34f56302b2db861566b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27252, "upload_time": "2013-07-30T04:52:44", "url": "https://files.pythonhosted.org/packages/9e/0e/5c02e541fd9e5ded83ff7d6c9a2dee7cd9e2745fb4e314d24c4f928494d6/pyroonga-0.5.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "c40988ef68e383d8a8226f2b71d17257", "sha256": "5ccf18787395f38db3da87e8a3cddb1a2d123039e3ca5cf9cc0eebf8356b3422" }, "downloads": -1, "filename": "pyroonga-0.5.1.tar.gz", "has_sig": false, "md5_digest": "c40988ef68e383d8a8226f2b71d17257", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31048, "upload_time": "2013-08-17T13:08:54", "url": "https://files.pythonhosted.org/packages/46/3a/82275214419a1bbc3a06f303edc89f989d51368518b3d3f344fbaae4a427/pyroonga-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "31d285c816da0c48ea6dce174c052f3a", "sha256": "e68c69cc2d7566862600578c3329641e94dc1270aeb4778613cc67d88eaf5acb" }, "downloads": -1, "filename": "pyroonga-0.5.2.tar.gz", "has_sig": false, "md5_digest": "31d285c816da0c48ea6dce174c052f3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40252, "upload_time": "2013-09-17T04:29:30", "url": "https://files.pythonhosted.org/packages/28/ab/f6aca0a3826853f4a6f9bdd5b011662fde0cfac637ee94209dac612bef88/pyroonga-0.5.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "31d285c816da0c48ea6dce174c052f3a", "sha256": "e68c69cc2d7566862600578c3329641e94dc1270aeb4778613cc67d88eaf5acb" }, "downloads": -1, "filename": "pyroonga-0.5.2.tar.gz", "has_sig": false, "md5_digest": "31d285c816da0c48ea6dce174c052f3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40252, "upload_time": "2013-09-17T04:29:30", "url": "https://files.pythonhosted.org/packages/28/ab/f6aca0a3826853f4a6f9bdd5b011662fde0cfac637ee94209dac612bef88/pyroonga-0.5.2.tar.gz" } ] }