Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
killing authored Dec 11, 2024
1 parent 6a5080d commit effac4c
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions manual/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
# Introduction

**SeaSearch** is a lightweight search engine will replace ElasticSearch as the default search engine, built on open source search engine ([ZincSearch](https://zincsearch-docs.zinc.dev/)) implemented in Go language.
**SeaSearch** is a lightweight search engine built on open source search engine ([ZincSearch](https://zincsearch-docs.zinc.dev/)), implemented in Go language. Our goal is to use SeaSearch to replace ElasticSearch as the default search engine for Seafile.

## SeaSearch vs. ElasticSearch:

- **Lightweight**: SeaSearch implemented in Go language, which is more lightweight than ElasticSearch the heavyweight Java program
- **Single Index per Library**: SeaSearch can search entire storage inside a libary and filter out the results with access permissions of the user, as ElasticSearch does not support
- **Lightweight**: SeaSearch is implemented in Go language. So it's more lightweight than ElasticSearch, which is implemented in Java.
- **One Index per Library**: SeaSearch can support large number of indexes in the system. With this feature, we can create one index for each library in Seafile. This limits the amount of data that needs to be searched for queries. With ElasticSearch, we have to save data from all libraries into one index, which is not good for performance when you have large amount of data.
- **Good Compatibility**: API compatible with ElasticSearch
- **Support S3 Storage**: SeaSearch can use S3 as storage
- **Easier Shared Storage in a cluster**: ElasticSearch replicates data between the nodes so consistency is more complex
- **Shared Storage Architecture for Cluster**: ElasticSearch's cluster architecture is based on replication of data among nodes. It's complex to maintain and not easy to scale. SeaSearch uses a shared-storage architecture. Cluster nodes share the same storage (usually S3 compatible object storage). With this architecture, it's easier to provide HA guarantees and easier to maintain. It's also possible to scale query performance by using more query nodes.

## Project Status and Plan

At the moment (end of 2024) the text indexing and search feature is ready for Beta usage. Upcoming features includes:

- Clustering
- Vector indexing and search

0 comments on commit effac4c

Please sign in to comment.