https://github.com/griffio/sqldelight-pgroonga-module-app
pgroonga textsearch module for SqlDelight
https://github.com/griffio/sqldelight-pgroonga-module-app
pgroonga sqldelight
Last synced: 2 months ago
JSON representation
pgroonga textsearch module for SqlDelight
- Host: GitHub
- URL: https://github.com/griffio/sqldelight-pgroonga-module-app
- Owner: griffio
- Created: 2025-07-13T18:06:54.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2026-03-19T19:58:36.000Z (4 months ago)
- Last Synced: 2026-03-20T02:50:50.539Z (4 months ago)
- Topics: pgroonga, sqldelight
- Language: Kotlin
- Homepage:
- Size: 30.3 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SqlDelight 2.1.x Postgresql module support prototype
https://github.com/cashapp/sqldelight
**Experimental**
Pgroonga https://pgroonga.github.io/
Use with SqlDelight `2.4.0-SNAPSHOT`
```sql
CREATE EXTENSION IF NOT EXISTS pgroonga;
CREATE TABLE Memos (
id INTEGER,
content TEXT
);
CREATE INDEX pgroonga_content_index ON Memos USING pgroonga (content)
WITH (tokenizer='TokenNgram("report_source_location", true)', normalizer='NormalizerNFKC100');
CREATE TABLE ScoreMemos (
id integer PRIMARY KEY,
content text
);
CREATE INDEX pgroonga_score_memos_content_index ON ScoreMemos USING pgroonga (content);
searchScoreMemos:
SELECT *, pgroonga_score(tableoid, ctid) AS score
FROM ScoreMemos
WHERE content &@ 'PGroonga' OR content &@ 'PostgreSQL';
searchHighlightHtml:
SELECT pgroonga_highlight_html(content, :keywords::TEXT[]) AS highlight_html
FROM Memos;
selectExtractKeywords:
SELECT UNNEST(pgroonga_query_extract_keywords(:keywords::TEXT)) AS query_extract_keywords;
```
* Add functions `pgroonga_highlight_html` `pgroonga_query_extract_keywords` `pgroonga_score`
TODO
* Needs to support `pgroonga_score` with system columns `tableoid, ctid`
* MERGED https://github.com/sqldelight/sqldelight/pull/5834
* Support array type function return
* MERGED https://github.com/sqldelight/sqldelight/pull/5835
---
```shell
docker run \
--name pgroonga-demo \
-e POSTGRES_PASSWORD=PGroonga \
-e POSTGRES_DB=PGroonga \
-e POSTGRES_USER=PGroonga \
-p 5432:5432 \
-d groonga/pgroonga:4.0.5-alpine-16-slim
```
```shell
./gradlew build &&
./gradlew flywayMigrate
```