An open API service indexing awesome lists of open source software.

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

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
```