elliotsawyer / silverstripe-typesense
Typesense is Lightning-fast, Open Source Search. No PhD required. Open Source alternative to Algolia + Pinecone + and an Easier-to-Use alternative to ElasticSearch and Solr. Fast, typo tolerant, in-memory fuzzy Search Engine for building delightful search experiences. This enables Silverstripe to wo
Requires
- lekoala/silverstripe-cms-actions: ^1.7|^1.5
- php-http/curl-client: ^2.3
- silverstripe/framework: ^4.10|^5
- symbiote/silverstripe-gridfieldextensions: ^3.6|^4
- symbiote/silverstripe-multivaluefield: ^6.1.0|^5.2
- symbiote/silverstripe-queuedjobs: ^5.1|^4
- typesense/typesense-php: ^4
Requires (Dev)
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-08-26 10:01:15 UTC
README
Author: Elliot Sawyer
Repository: https://codeberg.org/0x/silverstripe-typesense
Docs: https://0x.codeberg.page/silverstripe-typesense/
Live demos: https://sawyer.nz/demos
![]() | ![]() |
---|
Typesense is lightning-fast, open source search - no PhD required! It is an open source alternative to Algolia and an easier-to-use alternative to ElasticSearch and Solr. It offers fast, typo-tolerant, in-memory fuzzy search for building delightful search experiences.
This module was created to create a searchable Silverstripe website using Typesense for indexing. It provides highly performant, nearly-instant, and often sub-millisecond response times.
Typesense supports:
- Faceting
- Sorting
- Curated searches
- Synonyms
- Scoped, key-protected search
- Geospatial searches
- Machine learning and GPU-enhanced searches
- Automatic schema detection
- Analytics
- Document text extraction
- Multi-language support, including macron recognition and non-Latin characters.
- Federated search
Quick start
Set your global API key in .env or your environment variables. This can be any value, but make sure it is secret and not easily guessable:
#'head /dev/urandom | shasum -a 256' works great for this
TYPESENSE_API_KEY=5f02d0b58c49a99e8e8f65b74ebb9fdc5b1a2dfe56639bdc8551650900435f33
# this is your INTERNALLY accessible typesense server, not the one that appears in frontend
# see docs/07-searching.md for more info
TYPESENSE_SERVER="http://internal-hostname:8108"
# this is obtained from the Typesense dashboard, after you've started it up
# see docs/07-searching.md
TYPESENSE_SEARCH_KEY=""
Install the module:
composer require elliotsawyer/silverstripe-typesense
Set up a collection in the CMS, or set it up initially with YML:
ElliotSawyer\SilverstripeTypesense\Typesense:
collections:
Page:
name: Pages
fields:
- { name: Title, type: string, sort: true }
- { name: Content, type: string, optional: true }
- { name: Link, type: string, index: false, optional: true}
- { name: Tags, type: string[], facet: true, optional: true, sort: false}
- { name: Subsite, type: string, facet: true}
Run vendor/bin/sake dev/tasks TypesenseSyncTask
Documentation
- Development
- Installation
- Configuration
- Managing Collections and Fields
- Syncing
- How to search
- Troubleshooting
- Synonyms
Copyright statements
This software includes contributions from Elliot Sawyer, available under the LGPL3-With-Attribution license. This attribution statement is required to be shipped with the module, and is displayed within your application. These will appear in certain areas of your application where the module is being used.
Support
Like my work? Consider shouting me a coffee or a small donation if this module helped you solve a problem. I accept cryptocurrency at the following addresses:
- Bitcoin: 12gSxkqVNr9QMLQMMJdWemBaRRNPghmS3p
- Bitcoin Cash: 1QETPtssFRM981TGjVg74uUX8kShcA44ni
- Litecoin: LbyhaTESx3uQvwwd9So4sGSpi4tTJLKBdz
Paid support is available. Please get in touch at https://sawyer.nz/contact