13 件中 11 - 13 件を表示
« 前の 10 件
Displaying posts with tag: mysql-mroonga (reset)
groonga/mroongaの文字列正規化機能 (normalizer) の挙動を追ってみる

groonga/mroongaが標準で備える文字列正規化機能(ノーマライザ・normalizer)として、
いわゆるgroonga独自のnormalizer(NormalizerAuto)と呼ばれるもがあります。
これは、大文字・小文字だけでなく、全角・半角を同一視できるという
UnicodeのNFKCを用いた機能です。

とても便利な正規化機能なのですが、この文字列の正規化方法は
MySQLで利用されているCOLLATION(照合順序)とは異なる動作です。
利用シーンによっては、MySQLでの作法に合わせた方が都合が良い場合があります。
そこで、groonga-normalizer-mysqlというパッケージの出番です。

[さらに読む]
mroongaでparserとnormalizerを同時に指定する方法

mroonga-3.03より、インデックスのコメントにて、
parserとnormalizerを指定できるようになりました。

それぞれのスキーマ(テーブル構造)設計のサンプルを交えて紹介します。
その後に、mroongaで使えるparserとnormalizerの一覧を紹介します。

parserの指定例

約20種類から選ぶことが出来ます。リストは後述。
以下の例はTokenMecabというパーサを指定する際のスキーマです。

CREATE TABLE test (
  id int NOT NULL AUTO_INCREMENT,
  content varchar(255) NOT NULL,
  PRIMARY KEY (id),
  FULLTEXT INDEX (content) COMMENT 'parser "TokenMecab"'
) ENGINE=mroonga DEFAULT CHARSET=utf8;

normalizerの指定例

[さらに読む]
mroongaで特殊記号を用いた全文検索を行うときのエスケープ方法

mroongaで()~+><-*などの記号を含んだ文字列を検索しようとすると、以下のエラーが起きます。
ERROR 1064 (42000): failed to parse fulltext search keyword

本日はその対処法を紹介します。

エスケープ方法

特別な意味を持つ記号を検索する場合

()~+><-*などの記号を検索する場合は、ダブルクォートで囲いましょう。

以下、「<meta>」という検索を行う際のエスケープ方法です

-- 動かない
SELECT COUNT(*) FROM test_table WHERE MATCH(body) AGAINST('*D+ <meta>' IN BOOLEAN MODE);
ERROR 1064 (42000): failed to parse fulltext search keyword: <*D+ <meta>>: <Syntax error! (<meta>)>

-- 動く
SELECT COUNT(*) FROM test_table WHERE MATCH(body) AGAINST('*D+ "<meta>"' IN BOOLEAN MODE);

[さらに読む]
13 件中 11 - 13 件を表示
« 前の 10 件