Personal tools
You are here: Home KtJ's Blog サイトをFreeBSD10+python3.3+Bottleで作り直すメモ(7)-MariaDB:FULLTEXTインデックス
« November 2018 »
Su Mo Tu We Th Fr Sa
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
 

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

by ktj posted at 2014-07-14 06:54 last modified 2018-11-03 18:41

たたみラボさんのところの記事を元に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

(追記終わり)

The URL to Trackback this entry is:
http://www.ktjdragon.com/ktj/ktjs-blog/30b530a430c83092freebsd10-python3-3-bottle4f5c308a76f4305930e130e2-7-mariadb-fulltext30a430f330c330af30b9/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
(Required)


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: