{"id":18044691,"url":"https://github.com/groonga/groonga-normalizer-mysql","last_synced_at":"2026-03-07T11:31:12.692Z","repository":{"id":6549852,"uuid":"7791453","full_name":"groonga/groonga-normalizer-mysql","owner":"groonga","description":"A MySQL compatible normalizer plugin for Groonga","archived":false,"fork":false,"pushed_at":"2026-03-02T23:20:24.000Z","size":677,"stargazers_count":11,"open_issues_count":0,"forks_count":9,"subscribers_count":18,"default_branch":"main","last_synced_at":"2026-03-03T01:57:14.748Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/groonga.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2013-01-24T05:40:53.000Z","updated_at":"2026-03-02T23:20:26.000Z","dependencies_parsed_at":"2023-10-17T05:43:50.299Z","dependency_job_id":"bace12a0-9847-43ab-834e-c9448d3a93b0","html_url":"https://github.com/groonga/groonga-normalizer-mysql","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/groonga/groonga-normalizer-mysql","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groonga%2Fgroonga-normalizer-mysql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groonga%2Fgroonga-normalizer-mysql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groonga%2Fgroonga-normalizer-mysql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groonga%2Fgroonga-normalizer-mysql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/groonga","download_url":"https://codeload.github.com/groonga/groonga-normalizer-mysql/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groonga%2Fgroonga-normalizer-mysql/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30212124,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T09:02:10.694Z","status":"ssl_error","status_checked_at":"2026-03-07T09:02:08.429Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-30T18:10:20.325Z","updated_at":"2026-03-07T11:31:12.603Z","avatar_url":"https://github.com/groonga.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# README\n\n## Name\n\ngroonga-normalizer-mysql\n\n## Description\n\nGroonga-normalizer-mysql is a Groonga plugin. It provides MySQL\ncompatible normalizers and a custom normalizers to Groonga.\n\nHere are MySQL compatible normalizers:\n\n* `NormalizerMySQLGeneralCI` for `utf8mb4_general_ci`\n* `NormalizerMySQLUnicodeCI` for `utf8mb4_unicode_ci`\n* `NormalizerMySQLUnicode520CI` for `utf8mb4_unicode_520_ci`\n* `NormalizerMySQLUnicode900` (deprecated by `NormalizerMySQLUnicode`) for:\n  * `utf8mb4_0900_ai_ci` (`NormalizerMySQLUnicode900`)\n  * `utf8mb4_0900_as_ci` (`NormalizerMySQLUnicode900(\"weight_level\", 2)`)\n  * `utf8mb4_0900_as_cs` (`NormalizerMySQLUnicode900(\"weight_level\", 3)`)\n  * `utf8mb4_ja_0900_as_cs` (`NormalizerMySQLUnicode900(\"locale\", \"ja\", \"weight_level\", 3)`)\n  * `utf8mb4_ja_0900_as_cs_ks` (`NormalizerMySQLUnicode900(\"locale\", \"ja\", \"weight_level\", 4)`)\n* `NormalizerMySQLUnicode` for:\n  * `utf8mb4_0900_ai_ci` (`NormalizerMySQLUnicode(\"version\", \"9.0.0\")`)\n  * `utf8mb4_0900_as_ci` (`NormalizerMySQLUnicode(\"version\", \"9.0.0\", \"accent_sensitive\", true)`)\n  * `utf8mb4_0900_as_cs` (`NormalizerMySQLUnicode(\"version\", \"9.0.0\", \"accent_sensitive\", true, \"case_sensitive\", true)`)\n  * `utf8mb4_ja_0900_as_cs` (`NormalizerMySQLUnicode(\"version\", \"9.0.0\", \"accent_sensitive\", true, \"case_sensitive\", true, \"locale\", \"ja\")`)\n  * `utf8mb4_ja_0900_as_cs_ks` (`NormalizerMySQLUnicode(\"version\", \"9.0.0\", \"accent_sensitive\", true, \"case_sensitive\", true, \"locale\", \"ja\", \"kana_sensitive\", true)`)\n  * `utf8mb4_uca1400_ai_ci` (`NormalizerMySQLUnicode(\"version\", \"14.0.0\")`)\n  * `utf8mb4_uca1400_ai_cs` (`NormalizerMySQLUnicode(\"version\", \"14.0.0\", \"case_sensitive\", true)`)\n  * `utf8mb4_uca1400_as_ci` (`NormalizerMySQLUnicode(\"version\", \"14.0.0\", \"accent_sensitive\", true)`)\n  * `utf8mb4_uca1400_as_cs` (`NormalizerMySQLUnicode(\"version\", \"14.0.0\", \"accent_sensitive\", true, \"case_sensistive\", true)`)\n\nHere are custom normalizers:\n\n* `NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark`\n   * It's based on `NormalizerMySQLUnicodeCI`\n* `NormalizerMySQLUnicode520CIExceptKanaCIKanaWithVoicedSoundMark`\n   * It's based on `NormalizerMySQLUnicode520CI`\n\nThey are self-descriptive name but long. They are variant normalizers\nof `NormalizerMySQLUnicodeCI` and `NormalizerMySQLUnicode520CI`. They\nhave different behaviors. The followings are the different\nbehaviors. They describes with\n`NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark` but they\nare true for\n`NormalizerMySQLUnicode520CIExceptKanaCIKanaWithVoicedSoundMark`.\n\n* `NormalizerMySQLUnicodeCI` normalizes all small Hiragana such as `ぁ`,\n  `っ` to Hiragana such as `あ`, `つ`.\n  `NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark`\n  doesn't normalize `ぁ` to `あ` nor `っ` to `つ`. `ぁ` and `あ` are\n  different characters. `っ` and `つ` are also different characters.\n  This behavior is described by `ExceptKanaCI` in the long name.  This\n  following behaviors ared described by\n  `ExceptKanaWithVoicedSoundMark` in the long name.\n* `NormalizerMySQLUnicode` normalizes all Hiragana with voiced sound\n  mark such as `が` to Hiragana without voiced sound mark such as `か`.\n  `NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark` doesn't\n  normalize `が` to `か`. `が` and `か` are different characters.\n* `NormalizerMySQLUnicode` normalizes all Hiragana with semi-voiced sound\n  mark such as `ぱ` to Hiragana without semi-voiced sound mark such as `は`.\n  `NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark` doesn't\n  normalize `ぱ` to `は`. `ぱ` and `は` are different characters.\n* `NormalizerMySQLUnicode` normalizes all Katakana with voiced sound\n  mark such as `ガ` to Katakana without voiced sound mark such as `カ`.\n  `NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark` doesn't\n  normalize `ガ` to `カ`. `ガ` and `カ` are different characters.\n* `NormalizerMySQLUnicode` normalizes all Katakana with semi-voiced sound\n  mark such as `パ` to Hiragana without semi-voiced sound mark such as `ハ`.\n  `NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark` doesn't\n  normalize `パ` to `ハ`. `パ` and `ハ` are different characters.\n* `NormalizerMySQLUnicode` normalizes all halfwidth Katakana with\n  voiced sound mark such as `ｶﾞ` to halfwidth Katakana without voiced\n  sound mark such as `ｶ`.\n  `NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark`\n  normalizes all halfwidth Katakana with voided sound mark such as `ｶﾞ`\n  to fullwidth Katakana with voiced sound mark such as `ガ`.\n\n`NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark` and\n`NormalizerMySQLUnicode520CIExceptKanaCIKanaWithVoicedSoundMark`\nare MySQL incompatible normalizers but they are useful for Japanese\ntext. For example, `ふらつく` and `ブラック` has different\nmeans. `NormalizerMySQLUnicodeCI` identifies `ふらつく` with `ブラック`\nbut `NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark`\ndoesn't identify them.\n\n## Install\n\n### Debian GNU/Linux\n\n[Add apt-line for the Groonga deb package repository](https://groonga.org/docs/install/debian.html)\nand install `groonga-normalizer-mysql` package:\n\n    % sudo apt-get -y install groonga-normalizer-mysql\n\n### Ubuntu\n\n[Add apt-line for the Groonga deb package repository](https://groonga.org/docs/install/ubuntu.html)\nand install `groonga-normalizer-mysql` package:\n\n    % sudo apt-get -y install groonga-normalizer-mysql\n\n### AlmaLinux 8\n\nInstall `groonga-repository` package:\n\n    % sudo dnf install -y https://packages.groonga.org/almalinux/8/groonga-release-latest.noarch.rpm\n\nThen install `groonga-normalizer-mysql` package:\n\n    % sudo dnf install -y --enablerepo=epel groonga-normalizer-mysql\n\n### AlmaLinux 9\n\nInstall `groonga-repository` package:\n\n    % sudo dnf install -y https://packages.groonga.org/almalinux/9/groonga-release-latest.noarch.rpm\n\nThen install `groonga-normalizer-mysql` package:\n\n    % sudo dnf install -y --enablerepo=epel groonga-normalizer-mysql\n\n### Amazon Linux 2023\n\nInstall `groonga-repository` package:\n\n    % sudo dnf install -y https://packages.groonga.org/amazon-linux/2023/groonga-release-latest.noarch.rpm\n\nThen install `groonga-normalizer-mysql` package:\n\n    % sudo dnf install -y --enablerepo=epel groonga-normalizer-mysql\n\n### macOS - Homebrew\n\nInstall `groonga` package (which includes `groonga-normalizer-mysql`):\n\n    % brew install groonga\n\n### Windows\n\nYou need to build from source. Here are build instructions.\n\n#### Build system\n\nInstall the following build tools:\n\n* [Microsoft Visual C++](https://visualstudio.microsoft.com/vs/features/cplusplus/)\n* [CMake](http://www.cmake.org/)\n\n#### Build Groonga\n\nDownload the latest Groonga source from [GitHub releases](https://github.com/groonga/groonga/releases/). Source file name is formatted as `groonga-X.Y.Z.zip`.\n\nExtract the source and move to the source folder:\n\n    \u003e cd ...\\groonga-X.Y.Z\n    groonga-X.Y.Z\u003e\n\nRun CMake. Here is a command line to install Groonga to `C:\\groonga` folder:\n\n    groonga-X.Y.Z\u003e cmake . -G \"Visual Studio 14 Win64\" -DCMAKE_INSTALL_PREFIX=C:\\groonga\n\nBuild:\n\n    groonga-X.Y.Z\u003e cmake --build . --config Release\n\nInstall:\n\n    groonga-X.Y.Z\u003e cmake --build . --config Release --target Install\n\n#### Build groonga-normalizer-mysql\n\nDownload the latest groonga-normalizer-mysql source from [GitHub releases](https://github.com/groonga/groonga-normalizer-mysql/releases/). Source file name is formatted as `groonga-normalizer-X.Y.Z.zip`.\n\nExtract the source and move to the source folder:\n\n    \u003e cd ...\\groonga-normalizer-mysql-X.Y.Z\n    groonga-normalizer-mysql-X.Y.Z\u003e\n\nIMPORTANT!!!: Set `PKG_CONFIG_PATH` environment variable:\n\n    groonga-normalizer-mysql-X.Y.Z\u003e set PKG_CONFIG_PATH=C:\\groonga\\local\\lib\\pkgconfig\n\nRun CMake. Here is a command line to install Groonga to `C:\\groonga` folder:\n\n    groonga-normalizer-mysql-X.Y.Z\u003e cmake . -G \"Visual Studio 14 Win64\" -DCMAKE_INSTALL_PREFIX=C:\\groonga\n\nBuild:\n\n    groonga-normalizer-mysql-X.Y.Z\u003e cmake --build . --config Release\n\nInstall:\n\n    groonga-normalizer-mysql-X.Y.Z\u003e cmake --build . --config Release --target Install\n\n## Usage\n\nFirst, you need to register `normalizers/mysql` plugin:\n\n    groonga\u003e register normalizers/mysql\n\nThen, you can use `NormalizerMySQLGeneralCI` and\n`NormalizerMySQLUnicodeCI` as normalizers:\n\n    groonga\u003e table_create Lexicon TABLE_PAT_KEY --default_tokenizer TokenBigram --normalizer NormalizerMySQLGeneralCI\n\n## Dependencies\n\n* Groonga \u003e= 8.0.4\n\n## Mailing list\n\n* English: [groonga-talk@lists.sourceforge.net](https://lists.sourceforge.net/lists/listinfo/groonga-talk)\n* Japanese: [groonga-dev@lists.sourceforge.jp](http://lists.sourceforge.jp/mailman/listinfo/groonga-dev)\n\n## Thanks\n\n* Alexander Barkov \\\u003cbar@udm.net\\\u003e: The author of\n  `MYSQL_SOURCE/strings/ctype-utf8.c`.\n* ...\n\n## Authors\n\n* Kouhei Sutou \\\u003ckou@clear-code.com\\\u003e\n\n## License\n\nLGPLv2 only. See doc/text/lgpl-2.0.txt for details.\n\nThis program uses normalization table defined in MySQL source code. So\nthis program is derived work of `MYSQL_SOURCE/strings/ctype-utf8.c`,\n`MYSQL_SOURCE/strings/uca900_data.h`,\n`MYSQL_SOURCE/strings/uca900_ja_data.h`. This program is the same\nlicense as them and they are licensed under LGPLv2 only.\n\nThis program also uses normalization table defined in MariaDB source\ncode. The table is generated from\nhttps://www.unicode.org/Public/UCA/14.0.0/allkeys.txt . So the\nnormalization table is licensed under\nhttps://www.unicode.org/copyright.html . It's compatible with LGPLv2\nonly. So the program can use LGPLv2 only.\n\n## For developers\n\n### How to release\n\n#### Add a release note for a new release\n\n```bash\neditor doc/text/news.md\n```\n\n#### Update package versions\n\n```bash\nAPACHE_ARROW_REPOSITORY=${APACHE_ARROW_REPOSITORY_PATH} \\\n  GROONGA_REPOSITORY=${GROOGNA_REPOSITORY_PATH} \\\n  rake release:version:update\n```\n\n#### Tag\n\n```bash\nrake release:tag\n```\n\n#### Publish Ubuntu packages\n\n```bash\nAPACHE_ARROW_REPOSITORY=${APACHE_ARROW_REPOSITORY_PATH} \\\n  GROONGA_REPOSITORY=${GROOGNA_REPOSITORY_PATH} \\\n  LAUNCHPAD_UPLOADER_PGP_KEY=${YOUR_GPG_KEY_ID} \\\n  rake -C packages ubuntu:upload\n```\n\n#### Bump version for new development\n\n```bash\nrake dev:version:bump NEW_VERSION=${NEW_VERSION}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgroonga%2Fgroonga-normalizer-mysql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgroonga%2Fgroonga-normalizer-mysql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgroonga%2Fgroonga-normalizer-mysql/lists"}