Skip to content

Instantly share code, notes, and snippets.

View askdkc's full-sized avatar
:octocat:

askdkc

:octocat:
  • Japan
View GitHub Profile
@askdkc
askdkc / explain_analyze.sql
Created August 1, 2022 22:09
pgroongaのクエリ結果
# explain analyze verbose select pgroonga_highlight_html(title, pgroonga_query_extract_keywords('ジョバンニ OR 牛 OR 斉藤'))AS highlighted_title, title, pgroonga_highlight_html(body, pgroonga_query_extract_keywords('ジョバンニ OR 牛 OR 斉藤'))AS highlighted_body, body from "posts" where title &@~ pgroonga_query_expand('synonyms', 'terms', 'terms', 'ジョバンニ OR 牛 OR 斉藤')::varchar or body &@~ pgroonga_query_expand('synonyms', 'terms', 'terms', 'ジョバンニ OR 牛 OR 斉藤')::varchar limit 20 offset 90420;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@askdkc
askdkc / array_eloquent_sample.php
Created August 12, 2022 06:17
LaravelでPostgreSQLのArray型カラムを使う
// 同義語モデル「Synonym」がある前提
Synonym::all('terms');
/* 出力
Illuminate\Database\Eloquent\Collection {#1487
all: [
App\Models\Synonym {#2094
terms: "{さいとう,サイトウ,斉藤,斎藤,齋藤,齊藤}",
},
App\Models\Synonym {#2095
--
-- PostgreSQL database dump
--
-- Dumped from database version 14.5 (Homebrew)
-- Dumped by pg_dump version 14.5 (Homebrew)
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
@askdkc
askdkc / ubuntu_postgresql_setup.sh
Last active January 17, 2023 00:57
ubuntuでPostgreSQLをインストールする方法具体例
# VER 15のPostgreSQLインストール
sudo su -
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
apt-get update
apt-get install -y --force-yes postgresql-15 postgresql-contrib-15
# アクセス設定:OSのユーザを使う YOUR_MAIN_USERNAMEをubuntuのユーザ名に、YOUR_DB_PASSWORDをお好きなパスワードに書き換えるべし
@askdkc
askdkc / pgroonga_test_example.yml
Created January 21, 2023 23:28
GitHub Action test setup example for PGroonga
- name: Setup PostgreSQL
run: |
sudo apt install -y software-properties-common
sudo add-apt-repository -y universe
sudo add-apt-repository -y ppa:groonga/ppa
sudo apt update
sudo apt install postgresql postgresql-14-pgroonga
sudo systemctl restart postgresql
sudo -u postgres -H psql -c "ALTER ROLE postgres WITH PASSWORD 'postgres';"
sudo -u postgres -H createdb TEST_DB_NAME
@askdkc
askdkc / pgroonga_setup_ubuntu.sh
Last active October 30, 2023 00:20
Set Up PGroonga Ver 16 on Ubuntu 22
sudo apt install -y software-properties-common
sudo add-apt-repository -y universe
sudo add-apt-repository -y ppa:groonga/ppa
sudo apt install -y wget lsb-release
wget https://packages.groonga.org/ubuntu/groonga-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt install -y -V ./groonga-apt-source-latest-$(lsb_release --codename --short).deb
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --no-default-keyring --keyring /usr/share/keyrings/pdgd-keyring.gpg --import -
echo "deb [signed-by=/usr/share/keyrings/pdgd-keyring.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
CREATE TABLE names (
name varchar(255)
);
create extension pgroonga;
create index pgroonga_name_index on names using pgroonga (name);
insert into names values ('山田さん');
insert into names values ('横山さん');

DB作成

createdb dougigo
psql dougigo

SQL実行

CREATE EXTENSION pgroonga;

ひらがな、カタカナ、ローマ字検索実施用インデックス作成テスト

テーブル作成

CREATE EXTENSION IF NOT EXISTS pgroonga;

CREATE TABLE memos (
  id integer,
  title text,
@askdkc
askdkc / pgroonga_synonyms_example.md
Last active May 16, 2025 02:48
PGroongaを使って表記揺れ検索に対応させる方法

表記揺れ検索を実現するためのPGroongaの機能

例えば「斉藤」や「高橋」といった複数ある漢字の表記揺れを事前に辞書登録しておくことで、表記揺れ検索に対応できる(強敵:渡邊とかもいるね)

-- 必要な拡張機能追加
CREATE EXTENSION IF NOT EXISTS pgroonga;

-- ここで表記揺れ対応させる文字を登録するテーブルを作るよ
CREATE TABLE synonyms (