1read 100read
2013年06月WebProg53: 【全文検索】groonga【senna後継】 (106) TOP カテ一覧 スレ一覧 2ch元 削除依頼
2ch全板人気トーナメントでWebProg板を1位にしよう! (172)
【 引数 】をインスウとずっと呼んでた奴 (102)
PHPの使える鯖 (150)
【perl】速いのはどっち?【php】 (177)
MacOSXでローカルCGIテスト (198)
よくあるプログラムミス (172)

【全文検索】groonga【senna後継】


1 :2011/11/01 〜 最終レス :2013/06/01
ないようなので立ててみました
* groonga
http://groonga.org/ja/
* mysqlに組み込むgroongaストレージ(mroonga)
http://mroonga.github.com/
関連スレ
組み込み型全文検索エンジンSenna
http://hibari.2ch.net/test/read.cgi/php/1118762053/

2 :
トリトンのように、テーブル作成時にcharsetを指定すればujisが使えると思っていたのですが
invalid utf8 string(1) on grn_str_charlen_utf8というエラーが出て、
結果も思ったようなものになりません。
mroongaでujisのテーブルを使うには何か特別な処理が必要なのでしょうか?
CentOS5のRPMを使っています。

3 :
期待あげ

4 :
Apache Solrでいいじゃん。
みんな使ってるし。

終了


5 :
ソーラーってmysqlに全文検索を追加できるの?
使い方は別物じゃね

6 :
名前に-を含んだデータベースを作る
→groongaのテーブルを作る
→テーブルを削除しようとする
→エラーで削除できない
俺だけ?

7 :
SQLだとどうやっても削除できないから手でファイルを直接いじったよ

8 :
solrって最小のvpsで動かなかった
tritonnとhyperestraierでうまくいった

9 :
マシンスペックが必要ってこと?
javaだっけ

10 :
ラッパーモードのmyisamでdrop indexしたらエラーになる?
innodbならOKだった
色々検索したらmyisamはあんまり推奨じゃない感じかな
そもそもmyisamとの相性が悪いからgroonga開発したらしいし

11 :
まだこれつかうには危険な感じが...
ソーラーはmysqlで追加できないと思った


12 :
ストレージモードでグルーンガファイルをバックアップ→いったん削除→リストア
ってやったらmysqlへのアクセスではエラーになった
groongaのdbをmysqlのテーブル定義に後から紐づけるのはどうしたらいいんだろ

13 :
>>11
たしかに若干バギーな感じはある
でもトリトンももうmysqlのバージョンが古いしなぁ

14 :
ログファイル置き場を指定できるようにして欲しい
/var/log/mysql/にまとめたいだろJK

15 :
まだ実用になるレベルではないな
とりあえずtritonnを置き換えられるようになってほしい

16 :
とりあえず使えはするんだよね
運用の際のメンテとかまで考え出すと
まだ煮詰まってないなーって思う

17 :
>>14
お、書き込み時間が2ならび

18 :
php、perlはNAMAZUを使って。
レコメンドはvogooでも使えよ。
javaはLucenceでレコメンドはmahountでよくない?

19 :
SQL_CALC_FOUND_ROWSとlimitとorder byを同時に使うと
limitで制限した行数が全行数になるね
order byがないと全行数が正確に取れる。
groongaだけなのか、デフォルトの全文検索もそうなのかは検証してないけど
とりあえず普通のmyisamは、order byがあっても全行数が変わることはなかった

20 :
268 名前:nobodyさん[sage] 投稿日:2011/06/01(水) 17:59:58.68 ID:???
limit a,b 指定で b の抽出件数指定は効くんだけど、a がゼロから効かない。
100,10 や 1000, 10 と指定しても、0, 10 と同じ結果。
フルテキストインデックス再構築したけど同じ。
インストした頃はちゃんと表示されたはずなんだが…。
sennaスレのこれと同じ現象かな?

21 :
2ind機能はやくサポートしてほしい

22 :
ここにいる人たちは、全文検索を利用している人たちだと思うので質問させてください
(別スレにて誘導されました)
皆さんは日本語の全文検索をどのようにされていますでしょうか?
Tritonnをみると、MySQLのバージョンが結構古いみたいなのでどうなのかなと思うのですが、
どのように対策をされていますでしょうか?
>>15のように、まだ実用的ではないという事は、Tritonnの方がいいのでしょうか?

また、中には自分でN-gramによって対策をしている人などもいるようですが、日本語の全文検索に対する対策は、N-gramとかで自分で実装する、Tritonnなどを入れる以外にはないのでしょうか?


23 :
だからSolr使えって。

24 :
groongaとトリトンのベンチマークはかった人いる?
なんとなく、体感だけどgroongaが遅い感じがする
0.5秒くらいかかってる
もう一度検索したら、0.000数秒でめっちゃ速い
それはキャッシュが効いているのか、
一回目の検索でインデックス的なものが整理されたのか分からないけど。

25 :
>>22
唯一の答えはないと思いますよ
俺はトリトンからgroongaへの移行を進めていますが
今のところ、どっちかの方があきらかにいい、と言える状況ではないと思います

26 :
もしかして日本語の全文検索に関してはpostgresqlのほうがいい?

27 :
groongaを語る夕べ #2 November 29, 2011 12:18 PM
http://www.ustream.tv/recorded/18817014
めも

28 :
バージョンアップしてたから
mysql動かしたままupdateしたら
groongaがストレージから消えた
updateする時はサービス止めてからやらないといけないのかって当たり前か

29 :
gronnga 1.2.9 has been released.

30 :
>gronnga 1.2.9 has been released.
>>19の件は直ったのかな?

31 :
>>30
mroonga 1.10で修正済み。
http://mroonga.github.com/ja/docs/news.html#release-1-10
> FOUND_ROWS()とSQL_CALC_FOUND_ROWSに対応。
ちなみにmroongaは現在1.11が最新。

32 :
そろそろTritonnから乗り換えられそうかな。

33 :
更新はえーッス

34 :
Fedora15サポート削除早いよって思ったけどソースからビルドしてるので
試したらFedora15でもgroonga 1.2.9動いた

35 :
groonga-1.2.9 を -d --protocol http でサーバにして動かしていますが、
検索にヒットした文書から、類似した文書を検索することは可能でしょうか?
ttp://groonga.org/ja/docs/expr.html によると
> 類似文書検索や近傍検索のような高度な検索もすべてgrn_exprによって記述できます。
と書いてありますので select の --scorer に何らかの grn_expr を記述すればできそうにも思うのですが、
文書に含まれる語彙同士の類似度計算をどのように記述すれば良いのでしょうか…orz

36 :
2文書間での、類似度の計算法としてはこんなのがあるけど
ttp://www.gifu-nct.ac.jp/elec/deguchi/sotsuron/hayashi/node20.html
これをじゃぁどうやって grn_exprで書くんだろうねぇ
grn_expr のもうちょっと詳細な書き方はこんな文書があるけど
ttp://groonga.org/docs/contribution/development/query.html#id4
後の方に載っている「クエリの実例」ってのは多分これC APIとしての書き方じゃないか
類似文書を検索するには、2文書について処理をしなければならないわけだけど、
「ある文書」にアクセスするためには、その文書のカラム名を記載すればいいけど、
「他の文書」にアクセスする方法が分からないから記載できないな

37 :
>>36
ありがとうございます。重要度を要素に持つベクトルのなす角(cosθ)ですか。
そのページわかりやすいですね。
C API 形式の grn_expr は ECMA Script 形式でも使えるんでしょうかね…
いま一つこのあたりのドキュメントがわかりにくくて困っています。
でドキュメントのあちこちに出てくる「(ぐるんしき)」にいちいちイラッとしてみたりw
1. 文書から単語リストを抽出する関数
2. 全文書から指定された単語の重要度を求める関数
3. 2つの配列の積集合を求める関数
4. ベクトルの長さと内積を求める関数
を何とかして書けばできそうですね。
3, 4, はECMA Scriptで書ける(どこで書けばいいのかはわかってませんが)としても
1. 2. って、やっぱり C で書かなあかんのですかね…(´・ω・`)

38 :
>>37
1. は、全文検索用語彙表に対して、類似している文書を検索したい文書のIDで検索することで求められるかな、と思ったけど
よく分からない。
2 の重要度だけど、これは
ttp://groonga.org/ja/docs/tutorial/lexicon.html
に書いてあるように、語彙表に格納しておくことができそうだけど、事前に計算して入れておかなきゃダメだな。groongaがやってくれるわけじゃないみたい。
だから、grn_exprを生成するRubyとかPerlとかPHPとかCとかのプログラム・スクリプトで一部処理を行うことで実現できそうだけど、
「クエリ『ほげほげ』にヒットする文書に類似する文書」っていうgrn_exprは難しいんじゃないかな。できるのかもしれないけど

39 :
29日だがリリースはなしか・・・
流石に日曜日だとお休みかな

40 :
groonga 1.3.0 and mroonga 1.20 has been released.

41 :
バージョンアップきた
いまだにテーブル構造変わることがあるのかょ

42 :
バージョンアップする→古いテーブル残ってる→削除もできない
orz

43 :
なにそれ怖い

44 :
泣きながら古いバージョン入れ直したお

45 :
mysqld停止した状態で、MySQLデータフォルダ内の、
「データベース名.mrn」で始まる名前のファイルをすべて削除、
そしてデータベース名のフォルダの中の、「groongaエンジンのテーブル名.frm」というファイルをすべて削除、
という操作をすることで消せる
ただし誤って変なファイルを消すととんでもないことになるので削除ではなく別のフォルダに移動しておくというのが
望ましい

46 :
場所移さずに、
 元のファイル名.mouiranaikamo
とかにリネームじゃ駄目?

47 :
え? 毛利蘭かも?

48 :
なんかあと数回テーブル構造変わるみたい
ttp://twitter.com/ktou/status/172078385764372481

49 :
終わったら呼んでくれ

50 :
groonga 2.0.0 and mroonga 2.00 has been released.
mroongaはまた互換性が無いので注意。

51 :
更新はえーな
いいことだけど

52 :
メジャーバージョンアップにすぐ手を出して大丈夫だろうか?
様子みた方がいいかな

53 :
groonga -d でデーモンにしてる方におたずねしたいのですが、
停止するときってどうしてますか?
データが壊れやすいと聞いたので kill するのに抵抗があります。
参考: ttp://dupont-kedama.blogspot.com/2011/12/groonga2.html
> Q.インデックスやストレージのデータの壊れやすさや壊れるタイミングは?
> A.カーネルごと落ちると壊れやすい
> プロセルが落ちても壊れるかも
> 運が悪いとロックが残る
…で今のところこんな感じで書いてるんですが、
(gqtpの場合) # echo 'shutdown' | groonga -c
(httpの場合) # wget http://localhost:10041/d/shutdown -o /dev/null -O /dev/null

54 :
(途中で送信してしまいました)
…なんだか自分でもバカっぽい気がします…orz

55 :
utf8mb4に対応しないのかなぁ…
http://groonga.org/ja/docs/executables/groonga.html#cmdoption-e
# 指定できるエンコーディング: none, euc, utf8, sjis, latin, koi8r

56 :
あれ、PostgreSQLだとUTF-8で4バイト対応してるから使えるのかな?

57 :
rroongaまだー\(^o^)/

58 :
Rubyはオワコン。

59 :
centos6用って標準インストールのmysql5.1用にビルドされてるんだね
centos5用はmysql5.5との同時提供だから、groonga使うならcentos5の方がいい?

60 :
groonga 2.0.1 and mroonga 2.01 has been released.
メジャーバージョンアップが公開されてすぐアップするのは危険かなと思ってmroonga 2.00へはアップするのはやめといたが
そろそろうpしてもいいだろうか・・・
2.00より前からのアップグレードはDB作り直し必須だけど

61 :
groonga 2.0.2 and mroonga 2.02 has been released.

62 :
mysql5.5が含まれてないから5.5.23-1.el6.remi入れたら
mysql> INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';
ERROR 1126 (HY000): Can't open shared library '/usr/lib64/mysql/plugin/ha_mroonga.so' (errno: 2 /usr/lib64/mysql/plugin/ha_mroonga.so: undefined symbol: 以下略
ってなってはいらない・・・

63 :
バグでデバック用関数が5.5に無いけど、defineが有効にしてるらしい
対処法は・・・ググれw
あと、メモリ解放のなんたらの引数が減ってるので削ると
mroongaのソースを調整して再コンパイルすれば動く可能性高い

64 :
バグあるのかよ
しかもかなり根本的な部分で
バージョンップアが早いのはいいけどバグあったら即修正版アップしてくれよ

65 :
groongaに期待するな。
所詮、ユーザー数が少なくて開発者も少ない、
いつ終わってもおかしくないプロジェクトだ

66 :
あ、すまん、63だけど
バグがあるのはmysql5.5のincludeファイルだよ
groongaのバグの有無は使ってないから知らんw
良い感じに煮込まれてきたら使おうかとスレを見てるだけなので。はい。

67 :
ソースから入れればいいだけだろ

68 :
ソースっねw

69 :
mroongaストレージモードで使用した際
DISTINCTとLIMIT併用したときLIMITで指定した分とってから重複カットしてるから
返ってくるレコード数がLIMITと一致しない
バグだよね?

70 :
LIMITに関するバグは以前あったような
最新Verでも同様ならバグですね

71 :
色々やってみてサーバかデーモンで使うのが一番楽だと気づいた

72 :
>>55
亀レスだけどgroongaのほうは4バイト文字列対応してるぞ
MySQLが微妙

73 :
MySQL5.5以上で対応してるだけの話。

74 :
>>72-73
対応してるんだ。ありがと。

75 :
queryのエスケープ処理のカオスっぷりハンパねーな

76 :
mroongaテーブルで全文検索はうまくいくんだけど、
プライマリキーでの検索がちゃんとヒットしない
バージョンは1.3.0
俺だけ?
こんな単純なところで引っかかるとは・・

77 :
プライマリキーも全文検索の対象にしてるの?
プライマリキーでの全文検索ってのはできるのかな・・・
オートインクリメントのカラムを別途用意してそっちをプライマリキーにしたほうが安全だと思うが・・・

78 :
プライマリキーは全文検索の対象にしてないよ
varchar型の数文字の文字列
where id='hoge'
みたいにやっても何故かヒットしない。
最近バージョンにしようと思ったけど、何回やっても
Can't open shared library 'ha_mroonga.so' (errno: 0 API version for STORAGE ENGINE plugin is too different)
って言われる
インストールされてるパッケージは
groonga-tokenizer-mecab-2.0.3-0
groonga-release-1.1.0-0
groonga-plugin-suggest-2.0.3-0
groonga-2.0.3-0
groonga-libs-2.0.3-0
mysql-mroonga-2.03-0
MySQL-client-5.5.23-1.rhel5
MySQL-server-5.5.23-1.rhel5
いやこれ全部最新版だよね
もう疲れたよパトラッシュ

79 :
groongaのバージョン戻して、
プライマリキーを削除したら検索可能になった
それで普通のINDEXなら張り直しても問題ない
原理は不明だけど

80 :
昔はVARCHAR型プライマリキーの扱いに問題があったけど
最新バージョンでは大丈夫になってるはずだけどなぁ

81 :
最新バージョンはうまく入らなかったから戻したんだよ

82 :
>>78
yumで入れた場合MySQLとmroongaのバージョン気をつけないとそんなことになった気がする
mroongaソースから入れたらいいよ

83 :
MySQL-server のversion が 5.5.25-1.rhel5 にup されたね
おかげで、yum でmysql-mroonga が入るようになった

84 :
知っている方が居たら教えて頂きたいんですけど、
今、likeで部分一致を使って検索しているシステムを
全文検索に置き換えたいと思ってます
そこでmroongaを試して居たのですが…
「駅」とかで検索した時に、TokenBigram(デフォルト)だと引っかからず
対策としてTokenUnigramにしました
TokenUnigramにする事で、「駅」は解決したのですが、
今度は「BOX」がどうにもならず…
データにINBOXとかがあり、これが引っかからない…
mroongaで「駅」と「BOX」を両立させるうまい手は無いでしょうか
今の環境は、CentOS 6.2でmysqlは5.1.61, mroongaは2.0.3です
全部yumで入れました

85 :
ngramのがはやそげ

86 :
結局、
TokenBigramSplitSymbolAlphaDigitで
?mroonga_match_escalation_thresholdを1にして
検索かけたら上手く行った

87 :
WindowsServerでTritonn使ってます。
システムの移行を考えてて、groonga試したいんだけど、
MySQLのプラグインとしてgroongaを使うのはWindowsでは
できませんか?
導入手順ご存知の方がいらっしゃったら教えてください

88 :
ここ見たのか知らないけど、今ここでWindowsでも使えるように頑張ってるみたい
10月の後半ぐらいには使えるようになるんじゃね?
http://redmine.groonga.org/issues/1496

89 :
>>88
現在開発中なんですね。
気長に待ちます。

90 :
debパッケージからgroonga-server groonga-server-commonがなくなっているような…

91 :
groonga-server-gqtpに名前が変わったのか

92 :
groonga-httpdに
curl http://localhost:10041/d/status
とかすると405 not allowedになるんだけどどうすりゃいいの
nginx関連で405で調べるとpostした時のことばかりだし
groonga内包のhttpの方は、shutdownで帰ってこない
gqtpの方は問題ないんだが…
疲れた

93 :
groongaをhttpで起動し、
http://localhsot
にブラウザでアクセスしたら、
groongaのCPU使用率が100%になって、
応答なし状態になるんだけど、
何が悪いんでしょうか。
以下のコマンドを順番に実行しただけです。
ttp://groonga.org/ja/docs/tutorial/network.html#hypertext-transfer-protocol-http
ttp://perl-users.jp/articles/advent-calendar/2011/casual/4
Windows8と2008ServerR2の
両方で再現...
素直にLinux使うべき?

94 :
mroonga2.04->3.01に変えたら
Insert時にgroonga.logに
invalid utf8 string(2) on grn_str_charlen_utf8
が出るようになった・・・
文字コード照合順序はDBも、テーブルも、全文検索用インデックス設定してるカラムも
全部utf8_general_ciにしてる
全文検索の結果も同じ単語で今まで引っかかってたものが
半分くらいしか引っかからなくなってたり、、インデックスが壊れてる?

95 :
mroonga2.04->3.01に変えたら
Insert時にgroonga.logに
invalid utf8 string(2) on grn_str_charlen_utf8
が出るようになった・・・
文字コード照合順序はDBも、テーブルも、全文検索用インデックス設定してるカラムも
全部utf8_general_ciにしてる
全文検索の結果も同じ単語で今まで引っかかってたものが
半分くらいしか引っかからなくなってたり、、インデックスが壊れてる?

96 :
なんか、grn::dat::Trie::open failedって出るようになってしまってgroongaエンジン系全滅なんだけど。
どうやって復帰すりゃええんですかいの?

97 :
あ、mysql上なのでmroonga使ってますた

結局データの復帰はならず、一時ファイル的なものなので全抹消とあいなりました。
試したこと一覧
・UNINSTALL PLUGIN、INSTALL PLUGINを実行 → 変化なし
・clearlockを実行(データファーいるの場所がわからず全体に対してclearlock) → 変化なし
・drop table → エラーで動かず
・UNINSTALL PLUGINを実行してからdrop table → テーブル自体は削除OK
・同じDB上でもっかいmroongaエンジンのテーブル作成 → 同様のエラーで作成できず
・DBを変更してmroongaエンジンのテーブル作成 → OK
・現行バックアップできるテーブル(非mroongaエンジン)を退避して、drop database → OK
・DBごと再作成 → OK
もうちょっとスマートな解消方法あったんですかね?
スレチだったらごめんなさい。

98 :
oh... IDが変わってるけど>>96です。
ちなみに途中でgroonga及びmroongaは1.0.xから3.03にアップデートしますた。

99 :
続報
同名DBを作成しなおして同名テーブルを生成し直すとエラー
当然っちゃ当然ですね。
というわけで、DBをもう一回削除しなおした後、mysqlのdataディレクトリ中のmrnファイルをごっそり削除したところエラーは回避。
なんとも不安定な仕組みなもんだね。mroongaは

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
結局フリーで一番多機能な掲示板って何よ? (187)
Perlで電気ストーブを作る方法 (165)
【 スクリプト改造依頼スレ 】(丸投げ) part8 (162)
フリーメールの判別方法 (125)
何も分からん俺がPHPでWEBサイトを作るスレ (142)
外部2ちゃんねるread.cgi (189)
--log9.info------------------
EQが面白すぎる件について (262)
【FEZ】ファンタジーアースゼロ ニコ生スレ998(ん゙w (147)
The Tower of AION シャドウスレ Part39 (106)
【FEZ】ファンタジーアースゼロぉぅまsスレ1043Hi! (203)
ストラガーデンNEO Part145 (883)
聖剣ONLINE Part6 (100)
●mabinogi -マビノギ- 森鯖スレ 女神が2人● (205)
The Tower of AION チャントスレ Part30 (130)
真・女神転生IMAGINEサマナー専用 (646)
● mabinogi -マビノギ- 本スレ案内所8th ● (755)
大航海時代Online 戦闘系スレ 92海里 (184)
リネージュ普及活動 (560)
【賭博】PerfectWorld-完美世界-カイジAA【完美】 (228)
ファンタジーアース A鯖ホルデインスレ75 (923)
サービス終了したネトゲを書いていくスレ Part2 (226)
【新・天上碑】落ち目上等PART3【天下夢双】 (109)
--log55.com------------------
TRPGの電子化に拍車 Amazonが日本の出版業界を襲撃2
【第二式】異能使い 其之八【妖異大戦】
アイディアの出し方について
【放課後】卓上ゲームが登場する作品4【霧生さん】
【ロードス/クリスタニア】ソードワールドRPG268有
プレイング技術交換スレ 統合の33
1人用・1人プレイ可能ボードゲーム Part3
ままごとゲーム如きで偉そうにする馬鹿