https://github.com/waitingsong/paradedb
ParadeDb JavaScript Client Library
https://github.com/waitingsong/paradedb
analytics bm25 elasticsearch fts full-text-search hnsw hybrid-search mpp paradedb pgvector postgres similarity-search
Last synced: 2 days ago
JSON representation
ParadeDb JavaScript Client Library
- Host: GitHub
- URL: https://github.com/waitingsong/paradedb
- Owner: waitingsong
- License: mit
- Created: 2024-10-11T13:46:37.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-02-26T17:23:49.000Z (about 2 months ago)
- Last Synced: 2025-04-20T01:04:03.611Z (4 days ago)
- Topics: analytics, bm25, elasticsearch, fts, full-text-search, hnsw, hybrid-search, mpp, paradedb, pgvector, postgres, similarity-search
- Language: TypeScript
- Homepage:
- Size: 271 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# [ParadeDB] JavaScript Client Library
[]()
[](https://opensource.org/licenses/MIT)
[]()
[](https://github.com/waitingsong/paradedb/actions)
[](https://codecov.io/gh/waitingsong/paradedb)[ParadeDB] is an Elasticsearch alternative built on Postgres.
We're modernizing the features of Elasticsearch's product suite,
starting with real-time search and analytics.Test successfully with
- [Paradedb] v0.11
- [Paradedb] v0.12
- [Paradedb] v0.13
- [Paradedb] v0.14
- [Paradedb] v0.15 ([Query Builder] not supported)## Packages
| Package | Version |
| ---------------- | ---------------------- |
| [paradedb-js] | [![main-svg]][main-ch] |
| [@mwcp/paradedb] | [![cli-svg]][cli-ch] |## Installation
```sh
npm i paradedb
// OR
npm i @mwcp/paradedb
```## Usage
### Index
- Initialize ParadeDb instance
```ts
import { ParadeDb, type DbConnectionConfig } from 'paradedb'const connection: DbConnectionConfig = {
host: process.env['PARADEDB_HOST'] ? process.env['PARADEDB_HOST'] : 'localhost',
port: process.env['PARADEDB_PORT'] ? +process.env['PARADEDB_PORT'] : 5432,
database: process.env['PARADEDB_DB'] ? process.env['PARADEDB_DB'] : 'postgres',
user: process.env['PARADEDB_USER'] ? process.env['PARADEDB_USER'] : 'postgres',
password: process.env['PARADEDB_PASSWORD'] ? process.env['PARADEDB_PASSWORD'] : 'password',
}const pdb = new ParadeDb('master', { connection })
```- [Create an Index]
```ts
const options: CreateBm25Options = {
indexName: 'search_idx',
tableName: 'mock_items',
keyField: 'id',
}
await pdb.index.createBm25(options)
```
[More examples](https://github.com/waitingsong/paradedb/tree/main/packages/paradedb/test/lib/index-manager)- [Drop an Index]
```ts
const options: DropBm25Options = {
indexName: 'search_idx',
}
await pdb.index.dropBm25(options)
```- [Index Schema]
```ts
const rows: IndexSchemaDto[] = await idx.schema({ indexName: 'search_idx' })
assert(rows.length, 'Not found')
```- [Index Size]
```ts
const size: bigint = await idx.size({ indexName: 'search_idx' })
// 0n means not found
```### Full Text Search
- [Syntax of knex query builder]
- [FTS Examples]Basic Usage:
```ts
const pdb = new ParadeDb('test', dbConfig)
const rows = await pdb.search('mock_items')
.whereRaw(`description @@@ :k1`, { k1: 'keyboard' })
.orderBy('id', 'desc')
.limit(limit)
```## Midway.js Component
### Configuration
Update project `src/configuration.ts`
```ts
import { Configuration } from '@midwayjs/core'
import * as pdb from '@mwcp/paradedb'@Configuration({
imports: [ pdb ],
importConfigs: [join(__dirname, 'config')],
})
export class ContainerConfiguration implements ILifeCycle {
}
```## Usage
[Example](https://github.com/waitingsong/paradedb/blob/main/packages/mwcp-paradedb/test/fixtures/base-app/src/paradedb-manager.ts#L29)
## License
[MIT](LICENSE)### Languages
- [English](README.md)
- [中文](README.zh-CN.md)
[paradedb-js]: https://github.com/waitingsong/paradedb/tree/main/packages/paradedb
[main-svg]: https://img.shields.io/npm/v/paradedb.svg?maxAge=300
[main-ch]: https://github.com/waitingsong/paradedb/tree/main/packages/paradedb/CHANGELOG.md[@mwcp/paradedb]: https://github.com/waitingsong/paradedb/tree/main/packages/mwcp-paradedb
[cli-svg]: https://img.shields.io/npm/v/@mwcp/paradedb.svg?maxAge=300
[cli-ch]: https://github.com/waitingsong/paradedb/tree/main/packages/mwcp-paradedb/CHANGELOG.md[Midway.js]: https://midwayjs.org/
[ParadeDB]: https://www.paradedb.com/[Create an Index]: https://docs.paradedb.com/documentation/indexing/create_index
[Drop an Index]: https://docs.paradedb.com/documentation/indexing/delete_index
[Index Schema]: https://docs.paradedb.com/documentation/indexing/inspect_index#index-schema
[Index Size]: https://docs.paradedb.com/documentation/indexing/inspect_index#index-size[Syntax of knex query builder]: https://knexjs.org/guide/query-builder.html
[FTS Examples]: https://github.com/waitingsong/paradedb/tree/main/packages/paradedb/test/lib/fts
[Query Builder]: https://docs.paradedb.com/documentation/advanced/overview