{ "info": { "author": "DealiAxy", "author_email": "dealiaxy@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6" ], "description": "# CloverSearch\u5168\u6587\u68c0\u7d22\u6846\u67b6\n## \u7b80\u4ecb\n\u4e4b\u524d\u8bd5\u8fc7HayStack+Whoosh\u7684\u65b9\u6848\uff0c\u4f46\u662f\u914d\u7f6e\u9ebb\u70e6\uff0c\u800c\u4e14\u5bf9\u4e8e\u63a5\u53e3\u8c03\u7528\u7684\u652f\u6301\u4e5f\u4e0d\u53cb\u597d\uff0c\n\u770b\u4e86\u4e00\u4e0b\u6587\u6863\u770b\u5f97\u4e91\u91cc\u96fe\u91cc\uff0c\u7d22\u6027\u81ea\u5df1\u5b9e\u73b0\u4e00\u4e2a\u5168\u6587\u68c0\u7d22\u529f\u80fd\uff0c\u5176\u5b9e\u4e5f\u4e0d\u590d\u6742\u3002\n\n## \u57fa\u672c\u903b\u8f91\n1. \u6784\u5efa\u7d22\u5f15\n 1. \u8fd0\u884c\u521b\u5efamodel\u7d22\u5f15\u914d\u7f6e\u6587\u4ef6\n 2. \u914d\u7f6e\u54ea\u4e9bmodel\u9700\u8981\u52a0\u5165\u7d22\u5f15\n 3. \u8fd0\u884c\u521b\u5efa\u5b57\u6bb5\u7d22\u5f15\u914d\u7f6e\u6587\u4ef6\n 4. \u914d\u7f6e\u54ea\u4e9bmodel\u7684\u5b57\u6bb5\u9700\u8981\u52a0\u5165\u7d22\u5f15\n 5. \u8fd0\u884c\u6784\u5efa\u7d22\u5f15\n2. \u521d\u59cb\u5316\u7d22\u5f15\n3. \u63d0\u4ea4\u641c\u7d22\u8bf7\u6c42\n4. \u83b7\u53d6\u641c\u7d22\u7ed3\u679c\n\n## Quick Start\n### 1. \u9996\u5148\u5728**Django**\u9879\u76ee\u7684\u73af\u5883\u4e2d\u5b89\u88c5`cloversearch`\n```bash\npip install cloversearch\n```\n\n### 2. \u7f16\u8f91**Django**\u7684`setings.py`\u6587\u4ef6\uff1a\n\u5c06`cloversearch`\u52a0\u5165`INSTALLED_APPS`\n```python\n# \u52a0\u5165INSTALLED_APPS\nINSTALLED_APPS = [\n 'cloversearch'\n]\n```\n\u6dfb\u52a0`cloversearch`\u7684\u57fa\u672c\u914d\u7f6e\uff1a \n\u8be6\u7ec6\u914d\u7f6e\u8bf7\u770b\u4e0b\u65b9\u7684\u914d\u7f6e\u8bf4\u660e\n```python\nCLOVER_SEARCH = {\n # \u9700\u8981\u7d22\u5f15\u7684App\u5217\u8868\uff0c\u5fc5\u586b\n 'APP_LIST': [''],\n # \u5b58\u653e\u914d\u7f6e\u7684\u76ee\u5f55\uff0c\u5fc5\u586b\n 'CONFIG_DIR': '',\n # \u7d22\u5f15\u6570\u636e\u4fdd\u5b58\u76ee\u5f55\uff0c\u5fc5\u586b\n 'INDEX_DIR': '',\n}\n```\n\n### 3. \u626b\u63cf`model`\u4e0e\u5efa\u7acb\u7d22\u5f15\n> \u6ce8\u610f\uff01\u9996\u6b21\u4f7f\u7528\u641c\u7d22\u5f15\u64ce\u65f6\u4ee5\u4e0b\u547d\u4ee4\u7684\u6267\u884c\u987a\u5e8f\u4e0d\u53ef\u4ee5\u98a0\u5012\uff0c\u4e00\u5b9a\u8981\u521b\u5efa\u914d\u7f6e\uff0c\u5e76\u4e14\u914d\u7f6e\u4e86\u9700\u8981\u52a0\u5165\u68c0\u7d22\u7684\u5b57\u6bb5\u540e\u624d\u53ef\u4ee5\u5efa\u7acb\u7d22\u5f15\u3002\n```bash\n# \u626b\u63cf\u6240\u6709model\uff0c\u5e76\u4e14\u521b\u5efamodel\u914d\u7f6e\npython manage.py scan_models\n```\n\u6267\u884c\u8be5\u547d\u4ee4\u540e\u4f1a\u5728`CONFIG_DIR`\u91cc\u914d\u7f6e\u7684\u8def\u5f84\u91cc\u751f\u6210`models_config.ini`\u6587\u4ef6\uff0c\u5185\u5bb9\u7c7b\u4f3c\u4e0b\u9762\u8fd9\u6837\uff1a \n\u8bf7\u5728`models_config`\u914d\u7f6e\u6587\u4ef6\u91cc\u8bbe\u7f6e\u9700\u8981\u5f00\u542f\u7d22\u5f15\u7684`model`\n```ini\n[app_name]\nmodel1 = true\nmodel2 = true\nmodel3 = false\n```\n\u63a5\u4e0b\u6765\u626b\u63cf\u5f00\u542f\u4e86\u7d22\u5f15\u529f\u80fd\u7684`model`\u91cc\u5305\u542b\u7684\u5b57\u6bb5\uff1a\n```bash\n# \u626b\u63cf\u6240\u6709\u5f00\u542f\u7d22\u5f15\u529f\u80fdmodel\u91cc\u7684\u5b57\u6bb5\uff0c\u5e76\u4e14\u521b\u5efafield\u914d\u7f6e\npython manage.py scan_fields\n```\n\u6267\u884c\u8be5\u547d\u4ee4\u540e\u4f1a\u5728`CONFIG_DIR`\u91cc\u914d\u7f6e\u7684\u8def\u5f84\u91cc\u751f\u6210`[app_name]_fields_config.ini`\u6587\u4ef6 \n\u76ee\u524d`cloversearch`\u53ea\u626b\u63cf`CharField`\u548c`TextField`\u7c7b\u578b\u7684\u5b57\u6bb5 \n`[app_name]`\u5bf9\u5e94\u5177\u4f53\u7684`app`\u540d\u79f0\uff0c\u6587\u4ef6\u5185\u5bb9\u7c7b\u4f3c\u4e0b\u9762\u8fd9\u6837\uff1a\n```ini\n[model_name]\nfield1 = true\nfield2 = true\nfield3 = true\nfield4 = false\n```\n\u914d\u7f6e\u5b8c\u6210\u4e4b\u540e\u5c31\u53ef\u4ee5\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u5efa\u7acb\u641c\u7d22\u5f15\u64ce\u7684\u7d22\u5f15\u4e86\uff0c\u5efa\u7acb\u7d22\u5f15\u7684\u65f6\u95f4\u89c6\u6570\u636e\u91cf\u5927\u5c0f\u800c\u5b9a\n```bash\n# \u5efa\u7acb\u7d22\u5f15\npython manage.py build_index\n```\n\n### 4. \u641c\u7d22\u63a5\u53e3\u8c03\u7528\n```python\nfrom cloversearch.query import SearchQuery\nresult = SearchQuery.query('\u641c\u7d22\u5173\u952e\u8bcd')\n```\n`SearchQuery.query()`\u65b9\u6cd5\u8fd4\u56de\u4e00\u4e2a`SearchResultSet`\u5bf9\u8c61\uff0c\u6709\u5173`SearchResultSet`\u7684\u7b80\u5355\u7528\u6cd5\u5982\u4e0b\uff1a \n```python\nfrom cloversearch.query import SearchQuery\nresult = SearchQuery.query('\u641c\u7d22\u5173\u952e\u8bcd')\n# \u8fd4\u56de SearchResultObject \u7c7b\u578b\u7684 list\nresult_list = result.all\nfor item in result_list:\n # \u8f93\u51fa\u5e8f\u5217\u5316\u7684\u641c\u7d22\u7ed3\u679c\u5bf9\u8c61\n print(item.__dict__)\n```\n\n## \u6587\u4ef6\u7ed3\u6784\n### \u914d\u7f6e\u6587\u4ef6\n- `models_index_config.ini`: model\u7d22\u5f15\u914d\u7f6e\u6587\u4ef6\n- `fields_index_config.ini`: \u5b57\u6bb5\u7d22\u5f15\u914d\u7f6e\u6587\u4ef6\n- `search`: \u68c0\u7d22\u6846\u67b6\u76ee\u5f55\n - `index`: \u7d22\u5f15\u6570\u636e\u76ee\u5f55\n - `{ModelName}/{PrimaryKey}`: \u7d22\u5f15\u6570\u636e\n - `clean_data.json`: \u7ecf\u8fc7\u5b57\u7b26\u8fc7\u6ee4\u540e\u7684\u6570\u636e\n - `keywords.json`: \u5173\u952e\u8bcd\u6570\u636e\n\n## \u4ee3\u7801\u7ed3\u6784\n- `config.py`: \u6846\u67b6\u914d\u7f6e\u7ba1\u7406\u5668\uff0c\u7528\u4e8e\u89e3\u6790Django\u914d\u7f6e\n- `encoder.py': \u7528\u4e8e\u5904\u7406`SearchQueryObject`\u7684`JsonEncoder`\n- `index_builder.py`: \u7d22\u5f15\u6784\u5efa\u76f8\u5173\n - `create_model_config()`: \u521b\u5efamodel\u7d22\u5f15\u914d\u7f6e\u6587\u4ef6\n - `create_field_config()`: \u521b\u5efa\u5b57\u6bb5\u7d22\u5f15\u914d\u7f6e\u6587\u4ef6\n - `build()`: \u6784\u5efa\u7d22\u5f15\n- `indexes.py`: \u7d22\u5f15\u64cd\u4f5c\u76f8\u5173\n - `class Index`: \u7d22\u5f15\u7c7b\uff0c\u4e00\u4e2aIndex\u5bf9\u5e94\u7684\u5c31\u662f\u6570\u636e\u5e93\u8868\u91cc\u7684\u4e00\u884c\n - `class IndexManager`: \u7528\u4e8e\u5173\u4e8e\u7d22\u5f15\u7684\u7c7b\uff0c\u5355\u4f8b\u6a21\u5f0f\n- `processer.py`: \u6587\u672c\u5904\u7406\n - `word_segment()`: \u5206\u8bcd\u5904\u7406\n - `character_filter()`: \u5b57\u7b26\u8fc7\u6ee4\u5668\n- `query.py`: \u641c\u7d22\u8bf7\u6c42\u5904\u7406\n - `class SearchQueryObject`: \u641c\u7d22\u7ed3\u679c\u5bf9\u8c61\n - `class SearchQuerySet`: \u641c\u7d22\u7ed3\u679c\u96c6\n - `class SearchQuery`: \u641c\u7d22\u5904\u7406\u6838\u5fc3\u7c7b\n\n## Django\u914d\u7f6e\n### CloverSearch Config\n```python\nimport os\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\nCLOVER_SEARCH = {\n # \u9700\u8981\u7d22\u5f15\u7684App\u5217\u8868\uff0c\u5fc5\u586b\n 'APP_LIST': [''],\n # \u5b58\u653e\u914d\u7f6e\u7684\u76ee\u5f55\uff0c\u5fc5\u586b\n 'CONFIG_DIR': os.path.join(BASE_DIR, 'static', 'search', 'config'),\n # \u7d22\u5f15\u6570\u636e\u4fdd\u5b58\u76ee\u5f55\uff0c\u5fc5\u586b\n 'INDEX_DIR': os.path.join(BASE_DIR, 'static', 'search', 'index'),\n # Logger\u540d\u79f0\n 'LOGGER_NAME': 'console',\n # \u6587\u4ef6\u9ed8\u8ba4\u7f16\u7801\n 'DEFAULT_FILE_ENCODING': 'utf-8',\n # \u9ed8\u8ba4\u7684model\u7d22\u5f15\u914d\u7f6e (str)\n 'DEFAULT_MODEL_INDEX_ENABLED_STATE': 'true',\n # \u9ed8\u8ba4\u7684\u5b57\u6bb5\u7d22\u5f15\u914d\u7f6e (str)\n 'DEFAULT_FIELD_INDEX_ENABLED_STATE': 'true',\n # Model\u7d22\u5f15\u914d\u7f6e\u6587\u4ef6\u540d\n 'MODEL_INDEX_CONFIG_FILENAME': 'models_config.ini',\n # \u5b57\u6bb5\u7d22\u5f15\u914d\u7f6e\u6587\u4ef6\u540d\u540e\u7f00\uff0c\u914d\u7f6e\u9700\u8981\u641c\u7d22\u5f15\u64ce\u7d22\u5f15\u6307\u5b9amodel\u7684\u54ea\u4e9b\u5b57\u6bb5\n 'FIELD_CONFIG_FILENAME_SUFFIX': '_fields_config.ini',\n # \u652f\u6301\u7684\u6570\u636e\u5e93\u5b57\u6bb5\u7c7b\u578b\n 'SUPPORT_FIELDS_TYPE': ['CharField', 'TextField']\n}\n```\n\n### Logging \u65e5\u5fd7\u914d\u7f6e\n>\u6ce8\u610f\uff1a\u914d\u7f6e\u4e86\u540d\u4e3a`console`\u7684logger\u624d\u53ef\u4ee5\u770b\u5230\u7d22\u5f15\u6784\u5efa\u8fc7\u7a0b\u6216\u8005\u641c\u7d22\u8be6\u7ec6\u8fc7\u7a0b\u7684\u8f93\u51fa\u3002\n```python\nimport os\nLOGGING = {\n 'version': 1,\n 'disable_existing_loggers': True,\n 'formatters': {\n 'standard': {\n 'format': '%(asctime)s [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s] %(message)s'}\n # \u65e5\u5fd7\u683c\u5f0f\n },\n 'filters': {\n },\n 'handlers': {\n 'console': {\n 'level': 'DEBUG',\n 'class': 'logging.StreamHandler',\n 'formatter': 'standard'\n },\n },\n 'loggers': {\n 'console': {\n 'handlers': ['console'],\n 'level': 'DEBUG',\n 'propagate': True\n },\n }\n}\n```\n\n## manage.py \u547d\u4ee4\n> \u6ce8\u610f\uff01\u9996\u6b21\u4f7f\u7528\u641c\u7d22\u5f15\u64ce\u65f6\u987a\u5e8f\u4e0d\u53ef\u4ee5\u98a0\u5012\uff0c\u4e00\u5b9a\u8981\u521b\u5efa\u914d\u7f6e\uff0c\u5e76\u4e14\u914d\u7f6e\u4e86\u9700\u8981\u52a0\u5165\u68c0\u7d22\u7684\u5b57\u6bb5\u540e\u624d\u53ef\u4ee5\u5efa\u7acb\u7d22\u5f15\u3002\n```bash\n# \u626b\u63cf\u6240\u6709model\uff0c\u5e76\u4e14\u521b\u5efamodel\u914d\u7f6e\npython manage.py scan_models\n# \u626b\u63cf\u6240\u6709\u5f00\u542f\u7d22\u5f15\u529f\u80fdmodel\u91cc\u7684\u5b57\u6bb5\uff0c\u5e76\u4e14\u521b\u5efafield\u914d\u7f6e\npython manage.py scan_fields\n# \u5efa\u7acb\u7d22\u5f15\npython manage.py build_index\n```\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Deali-Axy/CloverSearch", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "cloversearch", "package_url": "https://pypi.org/project/cloversearch/", "platform": "", "project_url": "https://pypi.org/project/cloversearch/", "project_urls": { "Homepage": "https://github.com/Deali-Axy/CloverSearch" }, "release_url": "https://pypi.org/project/cloversearch/0.1.20/", "requires_dist": [ "jieba (>=0.39)", "django", "ujson" ], "requires_python": "", "summary": "CloverSearch\u641c\u7d22\u5f15\u64ce\u7684Django\u6a21\u5757\uff0c\u4f7f\u7528\u8d77\u6765\u8d85\u7ea7\u65b9\u4fbf\uff01\u3002\u7248\u672c[0.1.20]\u66f4\u65b0\u5185\u5bb9\uff1a\u4f18\u5316\u5efa\u7acb\u7d22\u5f15\u3001\u641c\u7d22\u6027\u80fd\uff0c\u6d4b\u8bd5\u6027\u80fd\u63d0\u9ad810\u500d\u4ee5\u4e0a\uff0c\u4f46\u662f\u53d7\u9650\u4e8ePython\u8bed\u8a00\u7684\u6027\u80fd\uff0c\u6570\u636e\u91cf\u5927\u7684\u65f6\u5019\u6027\u80fd\u8fd8\u662f\u4e0d\u591f\u7406\u60f3\uff0c\u6709\u5f85\u8fdb\u4e00\u6b65\u4f18\u5316\u3002", "version": "0.1.20" }, "last_serial": 4862856, "releases": { "0.0.12": [ { "comment_text": "", "digests": { "md5": "586edf4e1cddbbe5fe046a359348b481", "sha256": "1fbfbb7e550f3537ac628e594407675d608ce2902b006c158e36b39475ed68a6" }, "downloads": -1, "filename": "cloversearch-0.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "586edf4e1cddbbe5fe046a359348b481", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27800, "upload_time": "2019-01-07T09:44:26", "url": "https://files.pythonhosted.org/packages/0c/35/1aa76d0c7dcb550278638a09d34a2b5bb443c1440dce1300884efe555d34/cloversearch-0.0.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f65a1812b686c0430a9c24583a66a1c4", "sha256": "776f683c27a6dc48d66c804396e04415529609b976bdbdd2f6ebf33b954f3efe" }, "downloads": -1, "filename": "cloversearch-0.0.12.tar.gz", "has_sig": false, "md5_digest": "f65a1812b686c0430a9c24583a66a1c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10802, "upload_time": "2019-01-07T09:44:28", "url": "https://files.pythonhosted.org/packages/99/e3/01d453f454925173353a2042a759e6e2ab7fb0b64f04a88d360208aa5ae1/cloversearch-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "88d0cb9d06026032780011f69e9dce9f", "sha256": "714a4ea2bbed259cc6d6e4b49dcdd6204cf9ab13f6fb32360345246624ed79da" }, "downloads": -1, "filename": "cloversearch-0.0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "88d0cb9d06026032780011f69e9dce9f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27832, "upload_time": "2019-01-07T09:49:53", "url": "https://files.pythonhosted.org/packages/68/60/0639d43f65c4fad4e8c15beb9d38199e9e3b2bb86bc3c7773546418ada22/cloversearch-0.0.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f9fc4de39acb937ca9d2470b95c86932", "sha256": "d0a798f52e380b006867e8444e09d672003365c06d88ecbe00144dc9d1c72f46" }, "downloads": -1, "filename": "cloversearch-0.0.13.tar.gz", "has_sig": false, "md5_digest": "f9fc4de39acb937ca9d2470b95c86932", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10828, "upload_time": "2019-01-07T09:49:55", "url": "https://files.pythonhosted.org/packages/5d/6d/9c23b8d3dde2bb377335c6c74e78496cc9f4da9bcd618ddeb6d13d6b0d48/cloversearch-0.0.13.tar.gz" } ], "0.1.14": [ { "comment_text": "", "digests": { "md5": "f2373cffa7c952d76ae004610f01f481", "sha256": "f804808ec657f590311cccfb022979e395fff51d44803ea0648d55f005a535c7" }, "downloads": -1, "filename": "cloversearch-0.1.14-py3-none-any.whl", "has_sig": false, "md5_digest": "f2373cffa7c952d76ae004610f01f481", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28879, "upload_time": "2019-01-07T10:00:19", "url": "https://files.pythonhosted.org/packages/05/88/34515581d7cc5c18a49e91b3cb9228d62e3dd8842bc787e9ee83aaa128a3/cloversearch-0.1.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5212019af28ca49f81541a729a990a38", "sha256": "ce048310fd157d354bdd70899112c2afd0fb2f8f4e230700cefffddec4242c6c" }, "downloads": -1, "filename": "cloversearch-0.1.14.tar.gz", "has_sig": false, "md5_digest": "5212019af28ca49f81541a729a990a38", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10889, "upload_time": "2019-01-07T10:00:21", "url": "https://files.pythonhosted.org/packages/9b/b5/d65ce602bfa0aebb99909ffde46f0cea2ab105409993a60781211044627b/cloversearch-0.1.14.tar.gz" } ], "0.1.15": [ { "comment_text": "", "digests": { "md5": "26f6abe60ce07ceb49ce415e6da36f67", "sha256": "306ffdca9b1ff257ce6abbc4f0487a12c499ce7c9396106c2a82b17f225b2215" }, "downloads": -1, "filename": "cloversearch-0.1.15-py3-none-any.whl", "has_sig": false, "md5_digest": "26f6abe60ce07ceb49ce415e6da36f67", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28954, "upload_time": "2019-01-07T10:04:31", "url": "https://files.pythonhosted.org/packages/fc/a3/80df43c61d86ff30e531d0952fc4e7ff5ffe735dc53c061c30a45cb0b308/cloversearch-0.1.15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c4c68acae642a397769d900507e6f210", "sha256": "aeae2bf7177a9a13f6f9492c2fcab9b07baff8da70342c1018c8a335932fe644" }, "downloads": -1, "filename": "cloversearch-0.1.15.tar.gz", "has_sig": false, "md5_digest": "c4c68acae642a397769d900507e6f210", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10998, "upload_time": "2019-01-07T10:04:33", "url": "https://files.pythonhosted.org/packages/88/5b/14f9ca2500a2920a3b294519553c0bf4afaca01e8c66068ee352f97d88cf/cloversearch-0.1.15.tar.gz" } ], "0.1.17": [ { "comment_text": "", "digests": { "md5": "a4f356a49c1c8a043991a530e302fc3e", "sha256": "d655d17fa753bc1869a1292019f6acf7a44ecac8e3eeb5f0249da2465c9144f6" }, "downloads": -1, "filename": "cloversearch-0.1.17-py3-none-any.whl", "has_sig": false, "md5_digest": "a4f356a49c1c8a043991a530e302fc3e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29484, "upload_time": "2019-01-10T18:31:00", "url": "https://files.pythonhosted.org/packages/27/e4/e4175064635e4c65f2755772371054ad8759fcf519516e657bbad54c0428/cloversearch-0.1.17-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c10a0984c8e7492e640aab2d185c4cce", "sha256": "00aae4634fe3a33548cb5c02fe2180a67926e82a4ef209a695ad8e1ee7aeeffc" }, "downloads": -1, "filename": "cloversearch-0.1.17.tar.gz", "has_sig": false, "md5_digest": "c10a0984c8e7492e640aab2d185c4cce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12727, "upload_time": "2019-01-10T18:31:03", "url": "https://files.pythonhosted.org/packages/02/63/e8ca0ca95b2c631f674749d7bd61f7a80b4b4cc795a08f4bfa046e75615f/cloversearch-0.1.17.tar.gz" } ], "0.1.18": [ { "comment_text": "", "digests": { "md5": "c3a56f6ec1246462d4365bdeb2a4f459", "sha256": "2c4084567386efa81ba26083955f98b8d8d50c278b4e65e136ec0f4ad4f732ca" }, "downloads": -1, "filename": "cloversearch-0.1.18-py3-none-any.whl", "has_sig": false, "md5_digest": "c3a56f6ec1246462d4365bdeb2a4f459", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29482, "upload_time": "2019-01-10T18:29:05", "url": "https://files.pythonhosted.org/packages/b5/23/1771cc47e8ab1613f8223eac88fd0f77c0b93b328aebb88f082908836810/cloversearch-0.1.18-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24ed23dd123d61bedc510a432a08f7a3", "sha256": "84c23e63e42c305a794f0d1d13a0b8a76091fe5f607973d90985e4eafa385931" }, "downloads": -1, "filename": "cloversearch-0.1.18.tar.gz", "has_sig": false, "md5_digest": "24ed23dd123d61bedc510a432a08f7a3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12734, "upload_time": "2019-01-10T18:29:08", "url": "https://files.pythonhosted.org/packages/cf/f3/75ad8b259d65d1e3008c4109c91326f7baf19ee924f285acce6a5585980e/cloversearch-0.1.18.tar.gz" } ], "0.1.19": [ { "comment_text": "", "digests": { "md5": "e8bb22fcec1156ecdca6c29f919f6683", "sha256": "0468f4aaa65b78a9bf9b397ba14f9e17446efa2a38217b74c16cad119f395161" }, "downloads": -1, "filename": "cloversearch-0.1.19-py3-none-any.whl", "has_sig": false, "md5_digest": "e8bb22fcec1156ecdca6c29f919f6683", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29483, "upload_time": "2019-01-10T18:32:09", "url": "https://files.pythonhosted.org/packages/9d/8b/e09d6c1d9bc4f6a36477c050853882a89fe33689001a6644f07910946b3d/cloversearch-0.1.19-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50811c6faa401a488e19311b26e93486", "sha256": "b6a1bb193c05629689b03c94eea6d456bdb16620b0cd23746e070b9556bc0142" }, "downloads": -1, "filename": "cloversearch-0.1.19.tar.gz", "has_sig": false, "md5_digest": "50811c6faa401a488e19311b26e93486", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12727, "upload_time": "2019-01-10T18:32:13", "url": "https://files.pythonhosted.org/packages/e6/ba/bcf0b334f50dd081fef7cc5034923a906b20732b94e7f8eb1cf9a9842fc2/cloversearch-0.1.19.tar.gz" } ], "0.1.20": [ { "comment_text": "", "digests": { "md5": "cebbddccf513e79f7a2afc8482c2bba6", "sha256": "c2f7a2be3da4580cab34fc5f6e2403e0f56f9d7a90558dcc4af52bb18c0ce4ff" }, "downloads": -1, "filename": "cloversearch-0.1.20-py3-none-any.whl", "has_sig": false, "md5_digest": "cebbddccf513e79f7a2afc8482c2bba6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29489, "upload_time": "2019-02-25T03:50:34", "url": "https://files.pythonhosted.org/packages/a2/bf/642d456647be678914217ed2d067843b7241ea07c90e58e447712209722e/cloversearch-0.1.20-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58bc74660b17c2b4cc5021fbbfe03e0b", "sha256": "6bfc73c37c089ffc2475aab8fb746083630d1ae834e3cfe8d33bc19210319a05" }, "downloads": -1, "filename": "cloversearch-0.1.20.tar.gz", "has_sig": false, "md5_digest": "58bc74660b17c2b4cc5021fbbfe03e0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12744, "upload_time": "2019-02-25T03:50:39", "url": "https://files.pythonhosted.org/packages/28/79/f062b7f005e5360b8530e9efd05dddabe0f082ec46713f18173814d3b2cb/cloversearch-0.1.20.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cebbddccf513e79f7a2afc8482c2bba6", "sha256": "c2f7a2be3da4580cab34fc5f6e2403e0f56f9d7a90558dcc4af52bb18c0ce4ff" }, "downloads": -1, "filename": "cloversearch-0.1.20-py3-none-any.whl", "has_sig": false, "md5_digest": "cebbddccf513e79f7a2afc8482c2bba6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29489, "upload_time": "2019-02-25T03:50:34", "url": "https://files.pythonhosted.org/packages/a2/bf/642d456647be678914217ed2d067843b7241ea07c90e58e447712209722e/cloversearch-0.1.20-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58bc74660b17c2b4cc5021fbbfe03e0b", "sha256": "6bfc73c37c089ffc2475aab8fb746083630d1ae834e3cfe8d33bc19210319a05" }, "downloads": -1, "filename": "cloversearch-0.1.20.tar.gz", "has_sig": false, "md5_digest": "58bc74660b17c2b4cc5021fbbfe03e0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12744, "upload_time": "2019-02-25T03:50:39", "url": "https://files.pythonhosted.org/packages/28/79/f062b7f005e5360b8530e9efd05dddabe0f082ec46713f18173814d3b2cb/cloversearch-0.1.20.tar.gz" } ] }