サイトをFreeBSD10+python3.3+Bottleで作り直すメモ(7)-MariaDB:FULLTEXTインデックス

たたみラボさんのところの記事を元にMariaDBにFULLTEXTインデックスを設定してみた。

1. テーブルのデータベースエンジンをMyISAMにする

FULLTEXTインデックスはMyISAMデータベースエンジン特有の機能なので、テーブルがInnoDB等MyISAM以外のエンジンを使っている場合は変換する必要があります。クラッシュ耐性やトランザクションの実装等、InnoDBの方が推奨される場合が多いのですが。

2. my.cnfを設定

デフォルトでは4字未満の単語はヒットしない設定となっているようですが、それだと日本語環境で不便なので、 [mysqld] セクションに ft_min_word_len=1 を追加して1文字から検索できるようにします。設定したらmysqlを再起動します。

3. テーブルにインデックスをつける

CREATE FULLTEXT INDEX インデックス名 ON テーブル名(列名)

でインデックスを作成します。

(2018/11/3追記)

4. 検索

SELECT * FROM テーブル名 WHERE MATCH ( 列名 ) AGAINST ( 'キーワード' )

AND検索とかするならBOOLEAN MODEの方がよさそう

SELECT * FROM テーブル名 WHERE MATCH ( 列名 ) AGAINST ( '+キーワード1 +キーワード2' IN BOOLEAN MODE )

5. インデックスの再構築

例えばft_min_word_lenを変更した場合などは、インデックスの再構築を以下のコマンドで行う。

REPAIR TABLE テーブル名 QUICK

(追記終わり)

コメント(0)


Blog category: Ultima | Adventure games | BSD and Linux | FM TOWNS and Japanese home computers | Computers | Bottle | 広島新球場 | 日本プロ野球 | 広島市民球場跡地とサッカースタジアム | その他スポーツ | Other topics
2002 08 09 10 11 12
2003 01 02 03
2004 01 02 03 04 06 08 09 10 11 12
2005 01 02 03 04 05 06 07 08 09 10 11 12
2006 01 02 03 04 05 06 07 08 09 10 11 12
2007 01 02 03 04 05 06 07 08 09 10 11 12
2008 01 02 03 04 05 06 07 08 09 10 11 12
2009 01 02 04 05 06 07 09 10
2010 01 03 04 05 08 11
2011 01 02 03 04 07 11 12
2012 01 02 03 09 10 11
2013 01 02 03 05 06 07 08 09 10 11 12
2014 01 02 03 04 05 06 07 10 11 12
2015 01 02 03 04 05 07 08 11 12
2016 03 04 05 07 08 09 10 11
2017 06
2018 11 12
2019 01 04 10
2020 05 06 07

Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。