mroongaで色々検索してみた
以前書いた記事でインストールを行ったので挙動を確認してみる。groongaは簡単な説明しか読んでないので内部で何がおこっているか、理解してない^^;;とりあえず、実用重視で。
複数文字入れてみるとOR検索のようだ
SELECT * FROM Knowhow WHERE MATCH(know) AGAINST("sort with")
mysql> SELECT * FROM Knowhow WHERE MATCH(know) AGAINST("'sort with’”);
+-----------+----------+-----------------------------------+-----------------+------------------------------+---------------------+
| record_id | user_id | know | how | example | created_at |
+-----------+----------+-----------------------------------+-----------------+------------------------------+---------------------+
| 1 | 43874010 | How to sort with file size #linux | use du and sort | $ du -Sk . | sort -rn | head | 2013-02-11 11:03:49 |
| 3 | 43874010 | Change space with newline #linux | use tr command | $ tr ' ' '\n' | 2013-02-11 11:03:49 |
+-----------+----------+-----------------------------------+-----------------+------------------------------+---------------------+
2 rows in set (0.01 sec)
where colname = ‘’ との組み合わせ
whare match順番で速度が変わるのかは不明。。
SELECT * FROM Knowhow WHERE MATCH(know) AGAINST("'sort with'") and user_id = '43874010';
where .. and .. で組み合わせることができるようだ
SELECT * FROM Knowhow WHERE MATCH(know) AGAINST("sort") and MATCH(know) AGAINST("with")
Dプログマ!。何それ?
調べてみたらプログマを使うとANDとOR検索ができるっぽい。
D+ IN BOOLEANMODE : AND検索 * *DOR IN BOOLEANMODE : OR検索
下記のように使える。
mysql> SELECT * FROM Knowhow WHERE MATCH(know) AGAINST("*D+ sort with" IN BOOLEAN MODE);
+-----------+----------+-----------------------------------+-----------------+------------------------------+---------------------+
| record_id | user_id | know | how | example | created_at |
+-----------+----------+-----------------------------------+-----------------+------------------------------+---------------------+
| 1 | 43874010 | How to sort with file size #linux | use du and sort | $ du -Sk . | sort -rn | head | 2013-02-11 11:03:49 |
+-----------+----------+-----------------------------------+-----------------+------------------------------+---------------------+
1 row in set (0.01 sec)
Dプログマとwhere colname = ‘’との組み合わせ
これです。欲しいのは。OR検索はほぼ使用しないので無視しよう^^
mysql > SELECT * FROM Knowhow WHERE MATCH(know) AGAINST("*D+ jquery" IN BOOLEAN MODE) and user_id = '43874010';