{"id":26690848,"url":"https://github.com/zhenghaoz/gorse","last_synced_at":"2025-03-26T16:01:11.951Z","repository":{"id":37466760,"uuid":"144708327","full_name":"gorse-io/gorse","owner":"gorse-io","description":"Gorse open source recommender system engine","archived":false,"fork":false,"pushed_at":"2024-10-28T12:41:37.000Z","size":11583,"stargazers_count":8561,"open_issues_count":105,"forks_count":786,"subscribers_count":64,"default_branch":"master","last_synced_at":"2024-10-29T14:56:20.069Z","etag":null,"topics":["collaborative-filtering","go","knn","machine-learning","recommender-system"],"latest_commit_sha":null,"homepage":"https://gorse.io","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gorse-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-14T11:01:09.000Z","updated_at":"2024-10-29T11:58:57.000Z","dependencies_parsed_at":"2024-03-16T11:28:36.727Z","dependency_job_id":"41c0560f-1ee2-45f5-9c13-3ac2eaa4de53","html_url":"https://github.com/gorse-io/gorse","commit_stats":{"total_commits":1075,"total_committers":50,"mean_commits":21.5,"dds":"0.15627906976744188","last_synced_commit":"b959e382eedb8f65b15a5d53e03581d6f9d84a83"},"previous_names":["zhenghaoz/gorse"],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gorse-io%2Fgorse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gorse-io%2Fgorse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gorse-io%2Fgorse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gorse-io%2Fgorse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gorse-io","download_url":"https://codeload.github.com/gorse-io/gorse/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245689494,"owners_count":20656416,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["collaborative-filtering","go","knn","machine-learning","recommender-system"],"created_at":"2025-03-26T16:00:53.444Z","updated_at":"2025-03-26T16:01:11.941Z","avatar_url":"https://github.com/gorse-io.png","language":"Go","funding_links":[],"categories":["机器学习","开源类库","Machine Learning","Go","语言资源库","Recommendation Engines","机器学习库","Go (531)","Open source library","Repositories","Relational Databases"],"sub_categories":["SQL 查询语句构建库","搜索推荐","检索及分析资料库","Search and Analytic Databases","Tools","[Tools](#tools-1)","Advanced Console UIs","go","Vector Database","交互工具","Search Recommendations"],"readme":"# Gorse Recommender System Engine\n\n\u003cimg width=160 src=\"assets/gorse.png\"/\u003e\n\n![](https://img.shields.io/github/go-mod/go-version/zhenghaoz/gorse)\n[![build](https://github.com/zhenghaoz/gorse/workflows/build/badge.svg)](https://github.com/zhenghaoz/gorse/actions?query=workflow%3Abuild)\n[![codecov](https://codecov.io/gh/gorse-io/gorse/branch/master/graph/badge.svg)](https://codecov.io/gh/gorse-io/gorse)\n[![Go Report Card](https://goreportcard.com/badge/github.com/zhenghaoz/gorse)](https://goreportcard.com/report/github.com/zhenghaoz/gorse)\n[![Discord](https://img.shields.io/discord/830635934210588743)](https://discord.gg/x6gAtNNkAE)\n[![Twitter Follow](https://img.shields.io/twitter/follow/gorse_io?label=Follow\u0026style=social)](https://twitter.com/gorse_io)\n[![Gurubase](https://img.shields.io/badge/Gurubase-Ask%20Gorse%20Guru-006BFF)](https://gurubase.io/g/gorse)\n\nGorse is an open-source recommendation system written in Go. Gorse aims to be a universal open-source recommender system that can be quickly introduced into a wide variety of online services. By importing items, users, and interaction data into Gorse, the system will automatically train models to generate recommendations for each user. Project features are as follows.\n\n\u003cimg width=520 src=\"assets/workflow.png\"/\u003e\n\n- **Multi-source:** Recommend items from Popular, latest, user-based, item-based and collaborative filtering.\n- **AutoML:** Search the best recommendation model automatically in the background.\n- **Distributed prediction:** Support horizontal scaling in the recommendation stage after single node training.\n- **RESTful APIs:** Expose RESTful APIs for data CRUD and recommendation requests.\n- **Online evaluation:** Analyze online recommendation performance from recently inserted feedback.\n- **Dashboard:** Provide GUI for data management, system monitoring, and cluster status checking.\n\n## Quick Start\n\nThe playground mode has been prepared for beginners. Just set up a recommender system for GitHub repositories by the following commands. \n\n- Linux/macOS:\n\n```bash\ncurl -fsSL https://gorse.io/playground | bash\n```\n\n- Docker:\n\n```bash\ndocker run -p 8088:8088 zhenghaoz/gorse-in-one --playground\n```\n\nThe playground mode will download data from [GitRec](https://gitrec.gorse.io/) and import it into Gorse. The dashboard is available at `http://localhost:8088`.\n\n\u003cimg width=720 src=\"assets/dashboard.jpeg\"/\u003e\n\nAfter the \"Find neighbors of items\" task is completed on the \"Tasks\" page, try to insert several feedbacks into Gorse. Suppose Bob is a frontend developer who starred several frontend repositories in GitHub. We insert his star feedback to Gorse.\n\n```bash\nread -d '' JSON \u003c\u003c EOF\n[\n    { \\\"FeedbackType\\\": \\\"star\\\", \\\"UserId\\\": \\\"bob\\\", \\\"ItemId\\\": \\\"vuejs:vue\\\", \\\"Timestamp\\\": \\\"2022-02-24\\\" },\n    { \\\"FeedbackType\\\": \\\"star\\\", \\\"UserId\\\": \\\"bob\\\", \\\"ItemId\\\": \\\"d3:d3\\\", \\\"Timestamp\\\": \\\"2022-02-25\\\" },\n    { \\\"FeedbackType\\\": \\\"star\\\", \\\"UserId\\\": \\\"bob\\\", \\\"ItemId\\\": \\\"dogfalo:materialize\\\", \\\"Timestamp\\\": \\\"2022-02-26\\\" },\n    { \\\"FeedbackType\\\": \\\"star\\\", \\\"UserId\\\": \\\"bob\\\", \\\"ItemId\\\": \\\"mozilla:pdf.js\\\", \\\"Timestamp\\\": \\\"2022-02-27\\\" },\n    { \\\"FeedbackType\\\": \\\"star\\\", \\\"UserId\\\": \\\"bob\\\", \\\"ItemId\\\": \\\"moment:moment\\\", \\\"Timestamp\\\": \\\"2022-02-28\\\" }\n]\nEOF\n\ncurl -X POST http://127.0.0.1:8088/api/feedback \\\n   -H 'Content-Type: application/json' \\\n   -d \"$JSON\"\n```\n\nThen, fetch 10 recommended items from Gorse. We can find that frontend-related repositories are recommended for Bob.\n\n```bash\ncurl http://127.0.0.1:8088/api/recommend/bob?n=10\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eExample outputs:\u003c/summary\u003e\n\n```json\n[\n \"mbostock:d3\",\n \"nt1m:material-framework\",\n \"mdbootstrap:vue-bootstrap-with-material-design\",\n \"justice47:f2-vue\",\n \"10clouds:cyclejs-cookie\",\n \"academicpages:academicpages.github.io\",\n \"accenture:alexia\",\n \"addyosmani:tmi\",\n \"1wheel:d3-starterkit\",\n \"acdlite:redux-promise\"\n]\n```\n\n\u003c/details\u003e\n\n\u003e The exact output might be different from the example since the playground dataset changes over time.\n\nFor more information：\n\n- Read [official documents](https://gorse.io/docs/master)\n- Visit [official demo](https://gitrec.gorse.io/)\n- Discuss on [Discord](https://discord.gg/x6gAtNNkAE) or [GitHub Discussion](https://github.com/gorse-io/gorse/discussions)\n\n## Architecture\n\nGorse is a single-node training and distributed prediction recommender system. Gorse stores data in MySQL, MongoDB, Postgres, or ClickHouse, with intermediate results cached in Redis, MySQL, MongoDB and Postgres.\n\n1. The cluster consists of a master node, multiple worker nodes, and server nodes.\n1. The master node is responsible for model training, non-personalized item recommendation, configuration management, and membership management.\n1. The server node is responsible for exposing the RESTful APIs and online real-time recommendations.\n1. Worker nodes are responsible for offline recommendations for each user.\n\nIn addition, the administrator can perform system monitoring, data import and export, and system status checking via the dashboard on the master node.\n\n\u003cimg width=520 src=\"assets/architecture.png\"/\u003e\n\n## Contributors\n\n\u003ca href=\"https://github.com/zhenghaoz/gorse/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=zhenghaoz/gorse\" /\u003e\n\u003c/a\u003e\n\nAny contribution is appreciated: report a bug, give advice or create a pull request. Read [CONTRIBUTING.md](CONTRIBUTING.md) for more information.\n\n## Acknowledgments\n\n`gorse` is inspired by the following projects:\n\n- [Guibing Guo's librec](https://github.com/guoguibing/librec)\n- [Nicolas Hug's Surprise](https://github.com/NicolasHug/Surprise)\n- [Golang Samples's gopher-vector](https://github.com/golang-samples/gopher-vector)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhenghaoz%2Fgorse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhenghaoz%2Fgorse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhenghaoz%2Fgorse/lists"}