質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

1回答

2174閲覧

「WITH PARSER ngram」がどのような機能なのかよく理解できません

macchaccha

総合スコア8

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2022/03/30 08:18

編集2022/03/31 14:10

実現したいこと

MySQLの全文検索で「WITH PARSER ngram」という記述は必要なのか?どのような効果があるのか?を知りたいです。

もし大事な効果があり必要性が高い場合、次のエラーを解消する方法を知りたいです。

宜しくお願い致します。

発生している問題・エラーメッセージ

CREATEに失敗しこちらのエラーとなりました。

#1128 - Function 'ngram' is not defined

該当のソースコード

こちらのように「WITH PARSER ngram」を記述した場合のエラーです。

SQL

1CREATE TABLE a_test ( 2 ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 3 contents VARCHAR(500) CHARACTER SET utf8mb4 NOT NULL, 4 PRIMARY KEY (ID), 5 FULLTEXT full_index_a_test (contents) WITH PARSER ngram 6);

試したこと

どうやら 'ngram' の辺りが悪いみたいなので消して、次のように記述したらCREATEが成功しました。

SQL

1CREATE TABLE a_test ( 2 ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 3 contents VARCHAR(500) CHARACTER SET utf8mb4 NOT NULL, 4 PRIMARY KEY (ID), 5 FULLTEXT full_index_a_test (contents) 6);

しかしこれを消していいものかどうか?わからないので詳細を知るべく検索ましたが、ドキュメントを見ても、機械翻訳で要領を得ません…

Qiitaの記事なども目を通したものの、「WITH PARSER ngram」という記述の効果に関する言及が見当たらず…

質問まとめ

そこで質問なのですがこの「WITH PARSER ngram」という記述はどのような効果があるのでしょうか?

消した場合に大きな効果の違いがあればエラーを解消したいので、エラーの原因や解消の方法がお分かりの場合はそちらもご教示頂けますと幸いです。

消してもその違いが許容できるものならば、消してCREATEしようと思っています。

環境・バージョン

使用しておりますデータベースはXserverで契約した「MariaDB 10.5」になります。
ご回答何卒宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2022/03/30 08:45

環境はXAMPPかなにかでしょうか?
macchaccha

2022/03/30 09:06 編集

コメントありがとうございます。いえ、XserverのphpMyAdminで実行しています。
macchaccha

2022/03/31 05:02

コメントありがとうございます。使えないのですか…。MariaDB 10.5 は結構新しい方だと思うのですが、日本語の全文検索が使えないとなるとかなり制限されますね。
guest

回答1

0

ベストアンサー

そこで質問なのですがこの「WITH PARSER ngram」という記述はどのような効果があるのでしょうか?

日本語の場合、単語間のスペースがないので、インデックスを作る前に文章を切り分ける作業が必要となります。WITH PARSER ngramはそのパーサーの指定です。

指定しない場合、「特別な切り分け処理はせず、スペースで区切る」という動作になります。タグリストや英文など、スペースで切れているものならこれで構いませんが、通常の日本語の文章に使うとほとんど役に立たないインデックスにしかなりません。

投稿2022/03/30 10:35

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

macchaccha

2022/03/30 10:44

ご回答ありがとうございます。それならば消すわけにはいきませんね。 エラーは通常生じないハズのものでしょうか?「MariaDB 10.5」だと効かないとか、そういうことではないですよね?
maisumakun

2022/03/30 11:57

単に、「このサーバに必要なプラグインが入っていない」ということかと思います。共用サーバでは変更不可能な可能性が高いです。
macchaccha

2022/03/31 05:10

ご返信ありがとうございます。どうやらそのようです。「質問への追記・修正の依頼」にてhoshi-takanoriさんがその旨リンクを貼って下さいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問