Skip to content

Instantly share code, notes, and snippets.

@murakamik31
Last active December 9, 2015 14:09
Show Gist options
  • Save murakamik31/033330a0796363e3a609 to your computer and use it in GitHub Desktop.
Save murakamik31/033330a0796363e3a609 to your computer and use it in GitHub Desktop.

1. Groonga_install

rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm  
yum makecache  
yum install -y groonga groonga-devel groonga-tokenizer-mecab groonga-normalizer-mysql    

2. mysql_install

mkdir /home/vagrant/mysql_src  
cd /home/vagrant/mysql_src  

wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.46.tar.gz  
tar xfvz mysql-5.5.46.tar.gz  
mv mysql-5.5.46 /usr/local/src/mysql-5.5.46  

mkdir -p /usr/local/build/mysql-5.5.46  
yum install -y ncurses-devel cmake   
cd /usr/local/build/mysql-5.5.46  

cmake /usr/local/src/mysql-5.5.46  
make && make install  

3. Mroonga_install

mkdir /home/vagrant/mroonga_src
cd /home/vagrant/mroonga_src  
wget http://packages.groonga.org/nightly/mroonga-5.10.2015.12.05.tar.gz  
tar xfvz mroonga-5.10.2015.12.05.tar.gz  
cd mroonga-5.10.2015.12.05  

./configure \  
    PKG_CONFIG_PATH=/usr/local/lib/pkgconfig \  
    --with-mysql-source=/usr/local/src/mysql-5.5.46 \  
    --with-mysql-build=/usr/local/build/mysql-5.5.46 \  
    --with-mysql-config=/usr/local/mysql/bin/mysql_config  

make && make install

4. mysql_setup

groupadd mysql  
useradd -g mysql mysql  

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql  
cd /usr/local/mysql  
./scripts/mysql_install_db  

echo "[client]" >> /etc/my.cnf  
echo "socket=/var/lib/mysql/mysql.sock" >> /etc/my.cnf  
echo "default-character-set = utf8mb4" >> /etc/my.cnf
sed -i -e "5i character-set-server = utf8mb4" /etc/my.cnf  

/etc/init.d/mysql start  
/usr/local/mysql/bin/mysql -u root < /usr/local/share/mroonga/install.sql  

5. SQL

CREATE TABLE data (
  content text,
  FULLTEXT INDEX bigram (content),
  FULLTEXT INDEX mecab (content) COMMENT 'parser "TokenMecab"'
) ENGINE=Mroonga
  DEFAULT CHARSET=utf8mb4;
-- Query OK, 0 rows affected, 2 warnings (0.10 sec)

INSERT INTO data VALUES ('私の名前は中野です。');
-- Query OK, 1 row affected (0.02 sec)

SET mroonga_boolean_mode_syntax_flags = "SYNTAX_SCRIPT";
-- Query OK, 0 rows affected (0.00 sec)

SELECT content,
       MATCH (content)
       AGAINST ('query("data#bigram.index * 3 || data#mecab.index * 10", "中野 OR 名")'
                IN BOOLEAN MODE)
  FROM data
  WHERE MATCH (content)
        AGAINST ('query("data#bigram.index * 3 || data#mecab.index * 10", "中野 OR 名")'
                 IN BOOLEAN MODE);
-- Empty set (0.02 sec)

6. その他

select * from data;
+--------------------------------+
| content                        |
+--------------------------------+
| 私の名前は中野です。           |
+--------------------------------+
1 row in set (0.00 sec)

select mroonga_command("table_list");
[
  [
    [
      "id",
      "UInt32"
    ],
    [
      "name",
      "ShortText"
    ],
    [
      "path",
      "ShortText"
    ],
    [
      "flags",
      "ShortText"
    ],
    [
      "domain",
      "ShortText"
    ],
    [
      "range",
      "ShortText"
    ],
    [
      "default_tokenizer",
      "ShortText"
    ],
    [
      "normalizer",
      "ShortText"
    ]
  ],
  [
    260,
    "data",
    "mroonga_test.mrn.0000104",
    "TABLE_NO_KEY|PERSISTENT",
    null,
    null,
    null,
    null
  ],
  [
    262,
    "data-bigram",
    "mroonga_test.mrn.0000106",
    "TABLE_PAT_KEY|PERSISTENT",
    "ShortText",
    null,
    "TokenBigram",
    "NormalizerAuto"
  ],
  [
    264,
    "data-mecab",
    "mroonga_test.mrn.0000108",
    "TABLE_PAT_KEY|PERSISTENT",
    "ShortText",
    null,
    "TokenMecab",
    "NormalizerAuto"
  ],
  [
    256,
    "mroonga_operations",
    "mroonga_test.mrn.0000100",
    "TABLE_NO_KEY|PERSISTENT",
    null,
    null,
    null,
    null
  ]
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment