Merge branch 'main' into v0.25-join

This commit is contained in:
Jason Bosco 2023-12-18 16:04:29 -06:00
commit c18cc2f068
3 changed files with 110 additions and 70 deletions

View File

@ -45,6 +45,7 @@ jobs:
workflow_conclusion: ""
if_no_artifact_found: warn
skip_unpack: true
branch: ${{ github.head_ref || github.ref_name }}
- name: Uncompress bazel cache
run: |

111
README.md
View File

@ -11,15 +11,17 @@
</p>
<p align="center">
<a href="https://circleci.com/gh/typesense/typesense"><img src="https://circleci.com/gh/typesense/typesense.svg?style=shield&circle-token=1addd775339738a3d90869ddd8201110d561feaa"></a>
<!-- <a href="https://circleci.com/gh/typesense/typesense"><img src="https://circleci.com/gh/typesense/typesense.svg?style=shield&circle-token=1addd775339738a3d90869ddd8201110d561feaa"></a> -->
<a href="https://hub.docker.com/r/typesense/typesense/tags"><img src="https://img.shields.io/docker/pulls/typesense/typesense"></a>
<a href="https://github.com/typesense"><img src="https://img.shields.io/github/stars/typesense/typesense?label=github%20stars"></a>
<a href="https://github.com/typesense"><img src="https://img.shields.io/github/stars/typesense/typesense?label=github%20stars"></a><br>
<a href="https://cloud.typesense.org"><img src="https://img.shields.io/badge/searches_per_month_on_typesense_cloud-1.9B-blue"></a>
<p>
<p align="center">
<a href="https://typesense.org">Website</a> |
<a href="https://typesense.org/docs/">Documentation</a> |
<a href="https://github.com/orgs/typesense/projects/1">Roadmap</a> |
<a href="https://join.slack.com/t/typesense-community/shared_invite/zt-mx4nbsbn-AuOL89O7iBtvkz136egSJg">Slack Community</a> |
<a href="https://join.slack.com/t/typesense-community/shared_invite/zt-25mb3r14m-60o24PIIkDt~a6x7mk1XDQ">Slack Community</a> |
<a href="https://threads.typesense.org/kb">Community Threads</a> |
<a href="https://twitter.com/typesense">Twitter</a> |
<a href="https://calendly.com/jason-typesense/typesense-office-hours">Office Hours</a>
</p>
@ -38,12 +40,13 @@
- An E-Commerce Store Browsing experience: [ecommerce-store.typesense.org](https://ecommerce-store.typesense.org/)
- GeoSearch / Browsing experience: [airbnb-geosearch.typesense.org](https://airbnb-geosearch.typesense.org/)
- Search / Browse xkcd comics by topic: [xkcd-search.typesense.org](https://xkcd-search.typesense.org/)
- Semantic / Hybrid search on 300K HN comments: [hn-comments-search.typesense.org](https://hn-comments-search.typesense.org)
🗣️ 🎥 If you prefer watching videos:
- Here's one where we introduce Typesense and show a walk-through: https://youtu.be/F4mB0x_B1AE?t=144
- Here's our [roadmap](https://github.com/orgs/typesense/projects/1) call from Q1 2022: https://aviyel.com/events/297/typesense-community-call-q1-2022-roadmap-and-contributor-spotlight
- Check out Typesense's recent mention during Google I/O Developer Keynote: https://youtu.be/qBkyU1TJKDg?t=2399
- Here's one where one of our community members gives an overview of Typesense and shows you an end-to-end demo: https://www.youtube.com/watch?v=kwtHOkf7Jdg
## Quick Links
@ -69,11 +72,13 @@
- **Simple and Delightful:** Simple to set-up, integrate with, operate and scale.
- **⚡ Blazing Fast:** Built in C++. Meticulously architected from the ground-up for low-latency (<50ms) instant searches.
- **Tunable Ranking:** Easy to tailor your search results to perfection.
- **Sorting:** Sort results based on a particular field at query time (helpful for features like "Sort by Price (asc)").
- **Sorting:** Dynamically sort results based on a particular field at query time (helpful for features like "Sort by Price (asc)").
- **Faceting & Filtering:** Drill down and refine results.
- **Grouping & Distinct:** Group similar results together to show more variety.
- **Federated Search:** Search across multiple collections (indices) in a single HTTP request.
- **Geo Search:** Search and sort by results around a geographic location.
- **Geo Search:** Search and sort by results around a latitude/longitude or within a bounding box.
- **Vector Search:** Index embeddings from your machine learning models in Typesense and do a nearest-neighbor search. Can be used to build similarity search, semantic search, visual search, recommendations, etc.
- **Semantic / Hybrid Search:** Automatically generate embeddings from within Typesense using built-in models like S-BERT, E-5, etc or use OpenAI, PaLM API, etc, for both queries and indexed data. This allows you to send JSON data into Typesense and build an out-of-the-box semantic search + keyword search experience.
- **Scoped API Keys:** Generate API keys that only allow access to certain records, for multi-tenant applications.
- **Synonyms:** Define words as equivalents of each other, so searching for a word will also return results for the synonyms defined.
- **Curation & Merchandizing:** Boost particular records to a fixed position in the search results, to feature them.
@ -81,7 +86,7 @@
- **Seamless Version Upgrades:** As new versions of Typesense come out, upgrading is as simple as swapping out the binary and restarting Typesense.
- **No Runtime Dependencies:** Typesense is a single binary that you can run locally or in production with a single command.
**Don't see a feature on this list?** Search our issue tracker if someone has already requested it and add a comment to it explaining your use-case, or open a new issue if not. We prioritize our roadmap based on user feedback, so we'd love to hear from you.
**Don't see a feature on this list?** Search our issue tracker if someone has already requested it and add a comment to it explaining your use-case, or open a new issue if not. We prioritize our roadmap based on user feedback, so we'd love to hear from you.
## Roadmap
@ -105,8 +110,11 @@ We'd love to benchmark with larger datasets, if we can find large ones in the pu
## Who's using this?
Typesense is used by a range of users across different industries. We've only recently started documenting who's using it in our [Showcase](SHOWCASE.md).
Typesense is used by a range of users across different domains and verticals.
On Typesense Cloud we serve more than **1.9 BILLION** searches per month. Typesense's Docker images have been downloaded over 7M times.
We've recently started documenting who's using it in our [Showcase](SHOWCASE.md).
If you'd like to be included in the list, please feel free to edit [SHOWCASE.md](SHOWCASE.md) and send us a PR.
You'll also see a list of user logos on the [Typesense Cloud](https://cloud.typesense.org) home page.
@ -114,7 +122,7 @@ You'll also see a list of user logos on the [Typesense Cloud](https://cloud.type
## Install
**Option 1:** You can download the [binary packages](https://typesense.org/downloads) that we publish for
Linux (x86-64) and Mac.
Linux (x86_64 & arm64) and Mac (x86_64).
**Option 2:** You can also run Typesense from our [official Docker image](https://hub.docker.com/r/typesense/typesense).
@ -129,7 +137,7 @@ Here's a quick example showcasing how you can create a collection, index a docum
Let's begin by starting the Typesense server via Docker:
```
docker run -p 8108:8108 -v/tmp/data:/data typesense/typesense:0.24.0 --data-dir /data --api-key=Hu52dwsas2AdxdE
docker run -p 8108:8108 -v/tmp/data:/data typesense/typesense:0.25.1 --data-dir /data --api-key=Hu52dwsas2AdxdE
```
We have [API Clients](#api-clients) in a couple of languages, but let's use the Python client for this example.
@ -210,29 +218,60 @@ If you notice any issues with the documentation or walk-through, please let us k
While you can definitely use CURL to interact with Typesense Server directly, we offer official API clients to simplify using Typesense from your language of choice. The API Clients come built-in with a smart retry strategy to ensure that API calls made via them are resilient, especially in an HA setup.
- [typesense-js](https://github.com/typesense/typesense-js)
- [typesense-php](https://github.com/typesense/typesense-php)
- [typesense-python](https://github.com/typesense/typesense-python)
- [typesense-ruby](https://github.com/typesense/typesense-ruby)
- [JavaScript](https://github.com/typesense/typesense-js)
- [PHP](https://github.com/typesense/typesense-php)
- [Python](https://github.com/typesense/typesense-python)
- [Ruby](https://github.com/typesense/typesense-ruby)
If we don't offer an API client in your language, you can still use any popular HTTP client library to access Typesense's APIs directly.
Here are some community-contributed clients and integrations:
- [API client for Go](https://github.com/typesense/typesense-go)
- [API client for Dart](https://github.com/typesense/typesense-dart)
- [API client for C#](https://github.com/DAXGRID/typesense-dotnet)
- [Laravel Scout driver](https://github.com/devloopsnet/laravel-scout-typesense-engine)
- [Symfony integration](https://github.com/acseo/TypesenseBundle)
- [Go](https://github.com/typesense/typesense-go)
- [.Net](https://github.com/DAXGRID/typesense-dotnet)
- [Java](https://github.com/typesense/typesense-java)
- [Rust](https://github.com/typesense/typesense-rust)
- [Dart](https://github.com/typesense/typesense-dart)
- [Perl](https://github.com/Ovid/Search-Typesense)
- [Swift](https://github.com/typesense/typesense-swift)
- [Clojure](https://github.com/runeanielsen/typesense-clj)
- [python orm client](https://github.com/RedSnail/typesense_orm)
- [PHP SEAL Adapter](https://github.com/schranz-search/seal-typesense-adapter)
- [Elixir](https://github.com/jaeyson/ex_typesense)
We welcome community contributions to add more official client libraries and integrations. Please reach out to us at contact@typsense.org or open an issue on Github to collaborate with us on the architecture. 🙏
We welcome community contributions to add more official client libraries and integrations. Please reach out to us at contact@typsense.org or open an issue on GitHub to collaborate with us on the architecture. 🙏
### Framework Integrations
We also have the following framework integrations:
- [Laravel](https://github.com/typesense/laravel-scout-typesense-engine)
- [Firebase](https://github.com/typesense/firestore-typesense-search)
- [Gatsby](https://www.gatsbyjs.com/plugins/gatsby-plugin-typesense/)
- [WordPress](https://wordpress.org/plugins/search-with-typesense/?ref=typesense)
- [WooCommerce](https://www.codemanas.com/downloads/typesense-search-for-woocommerce/?ref=typesense)
- [Symfony](https://github.com/acseo/TypesenseBundle)
- [InstantSearch](https://github.com/typesense/typesense-instantsearch-adapter)
- [DocSearch](https://typesense.org/docs/guide/docsearch.html)
- [Docusaurus](https://github.com/typesense/docusaurus-theme-search-typesense)
- [ToolJet](https://tooljet.com/?ref=typesense)
- [Plone CMS](https://pypi.org/project/zopyx.typesense/)
- [Craft CMS](https://plugins.craftcms.com/typesense)
- [SEAL](https://github.com/schranz-search/schranz-search) provides integrations of Typesense in Laravel, Symfony, Spiral, Yii and Laminas Mezzio PHP Framework
### Postman Collection
We have a community-maintained Postman Collection here: [https://github.com/typesense/postman](https://github.com/typesense/postman).
[Postman](https://www.postman.com/downloads/) is an app that let's you perform HTTP requests by pointing and clicking, instead of having to type them out in the terminal.
The Postman Collection above gives you template requests that you can import into Postman, to quickly make API calls to Typesense.
## Search UI Components
You can use our [InstantSearch.js adapter](https://github.com/typesense/typesense-instantsearch-adapter)
to quickly build powerful search experiences, complete with filtering, sorting, pagination and more.
Here's how: [https://typesense.org/docs/0.24.0/guide/#search-ui](https://typesense.org/docs/0.24.0/guide/#search-ui)
Here's how: [https://typesense.org/docs/guide/search-ui-components.html](https://typesense.org/docs/guide/search-ui-components.html)
## FAQ
@ -309,13 +348,13 @@ If you have specifics that prevent you from using Typesense due to a licensing i
## Support
👋 🌐 New: If you have general questions about Typesense, want to say hello or just follow along, we'd like to invite you to join our [Slack Community](https://join.slack.com/t/typesense-community/shared_invite/zt-mx4nbsbn-AuOL89O7iBtvkz136egSJg).
👋 🌐 If you have general questions about Typesense, want to say hello or just follow along, we'd like to invite you to join our [Slack Community](https://join.slack.com/t/typesense-community/shared_invite/zt-25mb3r14m-60o24PIIkDt~a6x7mk1XDQ).
We also do virtual office hours every Friday. Reserve a time slot [here](https://calendly.com/jason-typesense/typesense-office-hours).
If you run into any problems or issues, please create a Github issue and we'll try our best to help.
If you run into any problems or issues, please create a GitHub issue and we'll try our best to help.
We strive to provide good support through our issue trackers on Github. However, if you'd like to receive private & prioritized support with:
We strive to provide good support through our issue trackers on GitHub. However, if you'd like to receive private & prioritized support with:
- Guaranteed SLAs
- Phone / video calls to discuss your specific use case and get recommendations on best practices
@ -331,23 +370,15 @@ We are a lean team on a mission to democratize search and we'll take all the hel
## Getting Latest Updates
If you'd like to get updates when we release new versions, click on the "Watch" button on the top and select "Releases only". Github will then send you notifications along with a changelog with each new release.
If you'd like to get updates when we release new versions, click on the "Watch" button on the top and select "Releases only". GitHub will then send you notifications along with a changelog with each new release.
We also post updates to our Twitter account about releases and additional topics related to Typesense. Follow us here: [@typesense](https://twitter.com/typesense).
👋 🌐 New: We'll also post updates on our [Slack Community](https://join.slack.com/t/typesense-community/shared_invite/zt-mx4nbsbn-AuOL89O7iBtvkz136egSJg).
👋 🌐 We'll also post updates on our [Slack Community](https://join.slack.com/t/typesense-community/shared_invite/zt-25mb3r14m-60o24PIIkDt~a6x7mk1XDQ).
## Build from source
**Building with Docker**
The docker build script takes care of all required dependencies, so it's the easiest way to build Typesense:
```
TYPESENSE_VERSION=nightly ./docker-build.sh --build-deploy-image --create-binary [--clean] [--depclean]
```
**Building on your machine**
We use [Bazel](https://bazel.build) to build Typesense.
Typesense requires the following dependencies:
@ -357,11 +388,13 @@ Typesense requires the following dependencies:
* OpenSSL (>=1.0.2)
* curl
* ICU
* brpc
* braft
```
./build.sh --create-binary [--clean] [--depclean]
Please refer to the [CI build steps](.github/workflows/tests.yml) for the latest set of dependencies.
Once you've installed them, run the following from the root of the repo:
```shell
bazel build //:typesense-server
```
The first build will take some time since other third-party libraries are pulled and built as part of the build process.

View File

@ -10,43 +10,49 @@ This is a selection of sites and apps using Typesense.
| Name | Description |
| ----------- | ----------- |
| [Read This Twice](https://www.readthistwice.com/) | Book discovery platform uses typesense to power the book/people search |
| [Oddle Eats](https://eats.oddle.me) | Food Delivery Service in Singapore |
| [DiscMaster](http://discmaster.textfiles.com/search) | Search 94 million vintage computer files from archive.org |
| [Dave & Adams Card World](https://www.dacardworld.com) | E-commerce platform for collectibles like sports cards, gaming cards, comics, or autographed memorabilia |
| [Echidna Sewing](https://www.echidnasewing.com.au) | Echidna Sewing is one of Australias largest sewing machine dealers |
| [Trading Strategy](https://tradingstrategy.ai/blog/world-fastest-token-search) | Algorithmic trading protocol for decentralised markets |
| [Instatus](https://instatus.com) | System Status Pages Platform |
| [Iconduck](https://iconduck.com) | Site to search for open source icons |
| [Service Foods](https://www.servicefoods.co.nz) | One of New Zealand's largest privately family owned and operated food service distribution businesses |
| [Otaku Square](https://www.otakusquare.com) | Online retailer for pop-culture (e.g. anime, games, movies) merchandise |
| [Orders Made Simple](https://ordersmadesimple.com) | A Stock ordering platform helping to connect hospitality and catering venues with their suppliers |
| [Back Right Up](https://backrightup.com) | Automatic Azure Devops backups |
| [Popcorn](https://onpopcorn.com) | Zoom meets Snapchat, async video chat app |
| [Rushtix](https://rushtix.com) | Live Comedy Shows platform |
| [What's In My Jar](https://whatsinmyjar.com) | Skincare Research platform |
| [GlobalTill](https://www.globaltill.com) | Omnichannel Retail Management System |
| [Upnext](https://www.getupnext.com) | Save, organize and focus on your personal content library |
| [Plaza](https://www.useplaza.com) | Live-shopping platform |
| [Aviyel](https://aviyel.com) | Open-source community platform |
| [Grafikart](https://www.grafikart.fr/) | Learning resources library |
| [Back Right Up](https://backrightup.com) | Automatic Azure Devops backups |
| [BetaSeries](https://www.betaseries.com/) | TV shows and movies recommendation, using Typesense to search into 4M+ international records |
| [New York University Databrary](https://nyu.databrary.org/) | Video documentation library |
| [ElbiseBul](https://www.elbisebul.com/) | E-commerce |
| [datarequests.org](https://www.datarequests.org/) | Search backend for the [company database](https://www.datarequests.org/company) that allows users to easily find the contact details for privacy-related requests |
| [furn.nl](https://furn.nl) | Dutch furniture comparison website |
| [FlyGRN](https://flygrn.com) | Flight Ticket Search Engine that ranks flights on carbon emissions and gives greener alternatives |
| [Have A Class](https://haveaclass.com/) | Find the perfect teacher online |
| [Jobsort](https://www.jobsort.com/) | Job search engine for developers, by developers (quicksort for tech jobs.) |
| [Bookology](https://play.google.com/store/apps/details?id=com.imihirpaldhikar.bookology) | "I am using Typesense for searching the the books listed on the platform. I switched from Algolia to Typesense because it is more convenient to only pay for the underlying infrastructure rather then paying for search queries. I will always use Typesense in my future projects." - @imihirpaldhikar
| [Puey Ungphakorn Institute for Economic Research](https://www.pier.or.th) | A research institute in Thailand |
| [Lawyaw](https://lawyaw.com) | Lawyaw provides easy to use document automation software that helps legal practices save time and avoid mistakes without sacrificing quality. *"Typesense is used as our search index and works great to search, sort and facet thousands of our Court forms each day. We look forward to working with Typesense for years to come as it continues to mature!" - @tpayne84* |
| [Job Ads Now](https://www.jobadsnow.com) | Job Ads Now is a jobs search engine focusing on the best candidate experience. Blazing fast search and filters by salary, location, bonus and more. You can also read the job highlights (TL;DR) for each job identified from the origina job post using AI |
| [OpenTacos](https://tacos.openbeta.io) | Free and open source rock climbing route wiki |
| [Bikifi](https://bikifi.com/) | A free education platform that brings premium educational content to anyone, anywhere in Turkey |
| [Bookology](https://play.google.com/store/apps/details?id=com.imihirpaldhikar.bookology) | "I am using Typesense for searching the the books listed on the platform. I switched from Algolia to Typesense because it is more convenient to only pay for the underlying infrastructure rather then paying for search queries. I will always use Typesense in my future projects." - @imihirpaldhikar
| [Cults.](https://cults3d.com) | Find designs for 3D-printing. *We are very happy with our switch to Typesense, making it a breeze to setup and have pertinent results right from the start* |
| [datarequests.org](https://www.datarequests.org/) | Search backend for the [company database](https://www.datarequests.org/company) that allows users to easily find the contact details for privacy-related requests |
| [Dave & Adams Card World](https://www.dacardworld.com) | E-commerce platform for collectibles like sports cards, gaming cards, comics, or autographed memorabilia |
| [DiscMaster](http://discmaster.textfiles.com/search) | Search 94 million vintage computer files from archive.org |
| [Echidna Sewing](https://www.echidnasewing.com.au) | Echidna Sewing is one of Australias largest sewing machine dealers |
| [ElbiseBul](https://www.elbisebul.com/) | E-commerce |
| [FlyGRN](https://flygrn.com) | Flight Ticket Search Engine that ranks flights on carbon emissions and gives greener alternatives |
| [furn.nl](https://furn.nl) | Dutch furniture comparison website |
| [GlobalTill](https://www.globaltill.com) | Omnichannel Retail Management System |
| [Grafikart](https://www.grafikart.fr/) | Learning resources library |
| [Granthappura](https://gpura.org/) | A free-licensed digitized artifacts archive related to Kerala from multiple languages. [Github Link](https://github.com/indic-archive/omeka-typesense-search) |
| [Have A Class](https://haveaclass.com/) | Find the perfect teacher online |
| [Hem](https://hem.com) | A premium furniture brand for the auction houses of tomorrow |
| [Iconduck](https://iconduck.com) | Site to search for open source icons |
| [Instatus](https://instatus.com) | System Status Pages Platform |
| [Job Ads Now](https://www.jobadsnow.com) | Job Ads Now is a jobs search engine focusing on the best candidate experience. Blazing fast search and filters by salary, location, bonus and more. You can also read the job highlights (TL;DR) for each job identified from the origina job post using AI |
| [Jobsort](https://www.jobsort.com/) | Job search engine for developers, by developers (quicksort for tech jobs.) |
| [Lawyaw](https://lawyaw.com) | Lawyaw provides easy to use document automation software that helps legal practices save time and avoid mistakes without sacrificing quality. *"Typesense is used as our search index and works great to search, sort and facet thousands of our Court forms each day. We look forward to working with Typesense for years to come as it continues to mature!" - @tpayne84* |
| [Magny SaaS search bar](https://magny.io) | Magny is a SaaS platform that helps implement command palettes, which significantly decreases the time users find anything in your app, leveraging the user experience and efficiency. |
| [MyHearty](https://myhearty.my) | A one-stop charity website to fundraise, donate, volunteer and apply for aids. It comes with a full-featured search UI (instant search, geosearch) for campaigns, volunteer events and aids. |
| [NeoDB](https://neodb.social/) | An open source project and free service to help users in Fediverse manage, share and discover collections, reviews and ratings for culture products, with a searchable catalog of over a million books, movies, music, podcasts, games and performances. |
| [Neolace](https://www.neolace.com) | Knowledge graph platform (combines a wiki and a graph database) |
| [New York University Databrary](https://nyu.databrary.org/) | Video documentation library |
| [Oddle Eats](https://eats.oddle.me) | Food Delivery Service in Singapore |
| [OpenTacos](https://tacos.openbeta.io) | Free and open source rock climbing route wiki |
| [Orders Made Simple](https://ordersmadesimple.com) | A Stock ordering platform helping to connect hospitality and catering venues with their suppliers |
| [Otaku Square](https://www.otakusquare.com) | Online retailer for pop-culture (e.g. anime, games, movies) merchandise |
| [Plaza](https://www.useplaza.com) | Live-shopping platform |
| [Popcorn](https://onpopcorn.com) | Zoom meets Snapchat, async video chat app |
| [Project Seldon](https://projectseldon.org) | A free and unbiased analysis platform for understanding societies and systems of government. |
| [Puey Ungphakorn Institute for Economic Research](https://www.pier.or.th) | A research institute in Thailand |
| [Read This Twice](https://www.readthistwice.com/) | Book discovery platform uses typesense to power the book/people search |
| [Rushtix](https://rushtix.com) | Live Comedy Shows platform |
| [Service Foods](https://www.servicefoods.co.nz) | One of New Zealand's largest privately family owned and operated food service distribution businesses |
| [Syracuse University](https://syracuse.edu) | A private research university in Syracuse, New York. [Visit our live typesense demo!](https://typesense-demo.dev3.digitalservices.syr.edu) |
| [Trading Strategy](https://tradingstrategy.ai/blog/world-fastest-token-search) | Algorithmic trading protocol for decentralised markets |
| [Upnext](https://www.getupnext.com) | Save, organize and focus on your personal content library |
| [What's In My Jar](https://whatsinmyjar.com) | Skincare Research platform |
### Typesense Demos