【全文検索】groonga【senna後継】
トリトンのように、テーブル作成時にcharsetを指定すればujisが使えると思っていたのですが
invalid utf8 string(1) on grn_str_charlen_utf8というエラーが出て、
結果も思ったようなものになりません。
mroongaでujisのテーブルを使うには何か特別な処理が必要なのでしょうか?
CentOS5のRPMを使っています。 Apache Solrでいいじゃん。
みんな使ってるし。
終了
ソーラーってmysqlに全文検索を追加できるの?
使い方は別物じゃね 名前に-を含んだデータベースを作る
→groongaのテーブルを作る
→テーブルを削除しようとする
→エラーで削除できない
俺だけ? SQLだとどうやっても削除できないから手でファイルを直接いじったよ solrって最小のvpsで動かなかった
tritonnとhyperestraierでうまくいった ラッパーモードのmyisamでdrop indexしたらエラーになる?
innodbならOKだった
色々検索したらmyisamはあんまり推奨じゃない感じかな
そもそもmyisamとの相性が悪いからgroonga開発したらしいし まだこれつかうには危険な感じが...
ソーラーはmysqlで追加できないと思った
ストレージモードでグルーンガファイルをバックアップ→いったん削除→リストア
ってやったらmysqlへのアクセスではエラーになった
groongaのdbをmysqlのテーブル定義に後から紐づけるのはどうしたらいいんだろ >>11
たしかに若干バギーな感じはある
でもトリトンももうmysqlのバージョンが古いしなぁ ログファイル置き場を指定できるようにして欲しい
/var/log/mysql/にまとめたいだろJK まだ実用になるレベルではないな
とりあえずtritonnを置き換えられるようになってほしい とりあえず使えはするんだよね
運用の際のメンテとかまで考え出すと
まだ煮詰まってないなーって思う php、perlはNAMAZUを使って。
レコメンドはvogooでも使えよ。
javaはLucenceでレコメンドはmahountでよくない?
SQL_CALC_FOUND_ROWSとlimitとorder byを同時に使うと
limitで制限した行数が全行数になるね
order byがないと全行数が正確に取れる。
groongaだけなのか、デフォルトの全文検索もそうなのかは検証してないけど
とりあえず普通のmyisamは、order byがあっても全行数が変わることはなかった 268 名前:nobodyさん[sage] 投稿日:2011/06/01(水) 17:59:58.68 ID:???
limit a,b 指定で b の抽出件数指定は効くんだけど、a がゼロから効かない。
100,10 や 1000, 10 と指定しても、0, 10 と同じ結果。
フルテキストインデックス再構築したけど同じ。
インストした頃はちゃんと表示されたはずなんだが…。
sennaスレのこれと同じ現象かな? ここにいる人たちは、全文検索を利用している人たちだと思うので質問させてください
(別スレにて誘導されました)
皆さんは日本語の全文検索をどのようにされていますでしょうか?
Tritonnをみると、MySQLのバージョンが結構古いみたいなのでどうなのかなと思うのですが、
どのように対策をされていますでしょうか?
>>15のように、まだ実用的ではないという事は、Tritonnの方がいいのでしょうか?
また、中には自分でN-gramによって対策をしている人などもいるようですが、日本語の全文検索に対する対策は、N-gramとかで自分で実装する、Tritonnなどを入れる以外にはないのでしょうか?
groongaとトリトンのベンチマークはかった人いる?
なんとなく、体感だけどgroongaが遅い感じがする
0.5秒くらいかかってる
もう一度検索したら、0.000数秒でめっちゃ速い
それはキャッシュが効いているのか、
一回目の検索でインデックス的なものが整理されたのか分からないけど。 >>22
唯一の答えはないと思いますよ
俺はトリトンからgroongaへの移行を進めていますが
今のところ、どっちかの方があきらかにいい、と言える状況ではないと思います もしかして日本語の全文検索に関してはpostgresqlのほうがいい? groongaを語る夕べ #2 November 29, 2011 12:18 PM
http://www.ustream.tv/recorded/18817014
めも バージョンアップしてたから
mysql動かしたままupdateしたら
groongaがストレージから消えた
updateする時はサービス止めてからやらないといけないのかって当たり前か gronnga 1.2.9 has been released. >gronnga 1.2.9 has been released.
>>19の件は直ったのかな? >>30
mroonga 1.10で修正済み。
http://mroonga.github.com/ja/docs/news.html#release-1-10
> FOUND_ROWS()とSQL_CALC_FOUND_ROWSに対応。
ちなみにmroongaは現在1.11が最新。 Fedora15サポート削除早いよって思ったけどソースからビルドしてるので
試したらFedora15でもgroonga 1.2.9動いた groonga-1.2.9 を -d --protocol http でサーバにして動かしていますが、
検索にヒットした文書から、類似した文書を検索することは可能でしょうか?
ttp://groonga.org/ja/docs/expr.html によると
> 類似文書検索や近傍検索のような高度な検索もすべてgrn_exprによって記述できます。
と書いてありますので select の --scorer に何らかの grn_expr を記述すればできそうにも思うのですが、
文書に含まれる語彙同士の類似度計算をどのように記述すれば良いのでしょうか…orz
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文書について処理をしなければならないわけだけど、
「ある文書」にアクセスするためには、その文書のカラム名を記載すればいいけど、
「他の文書」にアクセスする方法が分からないから記載できないな >>36
ありがとうございます。重要度を要素に持つベクトルのなす角(cosθ)ですか。
そのページわかりやすいですね。
C API 形式の grn_expr は ECMA Script 形式でも使えるんでしょうかね…
いま一つこのあたりのドキュメントがわかりにくくて困っています。
でドキュメントのあちこちに出てくる「(ぐるんしき)」にいちいちイラッとしてみたりw
1. 文書から単語リストを抽出する関数
2. 全文書から指定された単語の重要度を求める関数
3. 2つの配列の積集合を求める関数
4. ベクトルの長さと内積を求める関数
を何とかして書けばできそうですね。
3, 4, はECMA Scriptで書ける(どこで書けばいいのかはわかってませんが)としても
1. 2. って、やっぱり C で書かなあかんのですかね…(´・ω・`)
>>37
1. は、全文検索用語彙表に対して、類似している文書を検索したい文書のIDで検索することで求められるかな、と思ったけど
よく分からない。
2 の重要度だけど、これは
ttp://groonga.org/ja/docs/tutorial/lexicon.html
に書いてあるように、語彙表に格納しておくことができそうだけど、事前に計算して入れておかなきゃダメだな。groongaがやってくれるわけじゃないみたい。
だから、grn_exprを生成するRubyとかPerlとかPHPとかCとかのプログラム・スクリプトで一部処理を行うことで実現できそうだけど、
「クエリ『ほげほげ』にヒットする文書に類似する文書」っていうgrn_exprは難しいんじゃないかな。できるのかもしれないけど 29日だがリリースはなしか・・・
流石に日曜日だとお休みかな groonga 1.3.0 and mroonga 1.20 has been released. バージョンアップきた
いまだにテーブル構造変わることがあるのかょ バージョンアップする→古いテーブル残ってる→削除もできない
orz mysqld停止した状態で、MySQLデータフォルダ内の、
「データベース名.mrn」で始まる名前のファイルをすべて削除、
そしてデータベース名のフォルダの中の、「groongaエンジンのテーブル名.frm」というファイルをすべて削除、
という操作をすることで消せる
ただし誤って変なファイルを消すととんでもないことになるので削除ではなく別のフォルダに移動しておくというのが
望ましい 場所移さずに、
元のファイル名.mouiranaikamo
とかにリネームじゃ駄目? なんかあと数回テーブル構造変わるみたい
ttp://twitter.com/ktou/status/172078385764372481 groonga 2.0.0 and mroonga 2.00 has been released.
mroongaはまた互換性が無いので注意。 メジャーバージョンアップにすぐ手を出して大丈夫だろうか?
様子みた方がいいかな 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 (途中で送信してしまいました)
…なんだか自分でもバカっぽい気がします…orz utf8mb4に対応しないのかなぁ…
http://groonga.org/ja/docs/executables/groonga.html#cmdoption-e
# 指定できるエンコーディング: none, euc, utf8, sjis, latin, koi8r あれ、PostgreSQLだとUTF-8で4バイト対応してるから使えるのかな? centos6用って標準インストールのmysql5.1用にビルドされてるんだね
centos5用はmysql5.5との同時提供だから、groonga使うならcentos5の方がいい? groonga 2.0.1 and mroonga 2.01 has been released.
メジャーバージョンアップが公開されてすぐアップするのは危険かなと思ってmroonga 2.00へはアップするのはやめといたが
そろそろうpしてもいいだろうか・・・
2.00より前からのアップグレードはDB作り直し必須だけど groonga 2.0.2 and mroonga 2.02 has been released. 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: 以下略
ってなってはいらない・・・ バグでデバック用関数が5.5に無いけど、defineが有効にしてるらしい
対処法は・・・ググれw
あと、メモリ解放のなんたらの引数が減ってるので削ると
mroongaのソースを調整して再コンパイルすれば動く可能性高い バグあるのかよ
しかもかなり根本的な部分で
バージョンップアが早いのはいいけどバグあったら即修正版アップしてくれよ groongaに期待するな。
所詮、ユーザー数が少なくて開発者も少ない、
いつ終わってもおかしくないプロジェクトだ あ、すまん、63だけど
バグがあるのはmysql5.5のincludeファイルだよ
groongaのバグの有無は使ってないから知らんw
良い感じに煮込まれてきたら使おうかとスレを見てるだけなので。はい。 mroongaストレージモードで使用した際
DISTINCTとLIMIT併用したときLIMITで指定した分とってから重複カットしてるから
返ってくるレコード数がLIMITと一致しない
バグだよね? LIMITに関するバグは以前あったような
最新Verでも同様ならバグですね 色々やってみてサーバかデーモンで使うのが一番楽だと気づいた >>55
亀レスだけどgroongaのほうは4バイト文字列対応してるぞ
MySQLが微妙