トップページphp
118コメント36KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/11/01(火) 15:23:37.63ID:zBzeEu6N
ないようなので立ててみました

* groonga
http://groonga.org/ja/

* mysqlに組み込むgroongaストレージ(mroonga)
http://mroonga.github.com/

関連スレ
組み込み型全文検索エンジンSenna
http://hibari.2ch.net/test/read.cgi/php/1118762053/
0072nobodyさん2012/05/23(水) 17:43:29.64ID:???
>>55
亀レスだけどgroongaのほうは4バイト文字列対応してるぞ
MySQLが微妙
0073nobodyさん2012/05/24(木) 20:01:11.73ID:???
MySQL5.5以上で対応してるだけの話。
0074552012/05/24(木) 21:16:26.25ID:???
>>72-73
対応してるんだ。ありがと。
0075nobodyさん2012/05/30(水) 13:28:02.35ID:???
queryのエスケープ処理のカオスっぷりハンパねーな
0076nobodyさん2012/06/01(金) 16:29:26.89ID:GjNXJRiE
mroongaテーブルで全文検索はうまくいくんだけど、
プライマリキーでの検索がちゃんとヒットしない
バージョンは1.3.0
俺だけ?
こんな単純なところで引っかかるとは・・
0077nobodyさん2012/06/01(金) 19:31:21.57ID:???
プライマリキーも全文検索の対象にしてるの?

プライマリキーでの全文検索ってのはできるのかな・・・
オートインクリメントのカラムを別途用意してそっちをプライマリキーにしたほうが安全だと思うが・・・
0078nobodyさん2012/06/01(金) 22:44:27.99ID:???
プライマリキーは全文検索の対象にしてないよ
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

いやこれ全部最新版だよね
もう疲れたよパトラッシュ
0079nobodyさん2012/06/02(土) 02:12:33.64ID:???
groongaのバージョン戻して、
プライマリキーを削除したら検索可能になった
それで普通のINDEXなら張り直しても問題ない
原理は不明だけど
0080nobodyさん2012/06/02(土) 20:56:24.77ID:???
昔はVARCHAR型プライマリキーの扱いに問題があったけど
最新バージョンでは大丈夫になってるはずだけどなぁ
0081nobodyさん2012/06/03(日) 00:04:53.44ID:???
最新バージョンはうまく入らなかったから戻したんだよ
0082nobodyさん2012/06/03(日) 02:47:33.61ID:???
>>78
yumで入れた場合MySQLとmroongaのバージョン気をつけないとそんなことになった気がする
mroongaソースから入れたらいいよ
0083nobodyさん2012/06/09(土) 20:25:01.76ID:???
MySQL-server のversion が 5.5.25-1.rhel5 にup されたね
おかげで、yum でmysql-mroonga が入るようになった
0084nobodyさん2012/06/11(月) 17:37:37.24ID:???
知っている方が居たら教えて頂きたいんですけど、
今、likeで部分一致を使って検索しているシステムを
全文検索に置き換えたいと思ってます

そこでmroongaを試して居たのですが…
「駅」とかで検索した時に、TokenBigram(デフォルト)だと引っかからず
対策としてTokenUnigramにしました

TokenUnigramにする事で、「駅」は解決したのですが、
今度は「BOX」がどうにもならず…
データにINBOXとかがあり、これが引っかからない…

mroongaで「駅」と「BOX」を両立させるうまい手は無いでしょうか

今の環境は、CentOS 6.2でmysqlは5.1.61, mroongaは2.0.3です
全部yumで入れました
0085nobodyさん2012/06/11(月) 21:09:03.26ID:???
ngramのがはやそげ
0086842012/06/15(金) 19:58:43.63ID:???
結局、
TokenBigramSplitSymbolAlphaDigitで
?mroonga_match_escalation_thresholdを1にして
検索かけたら上手く行った
0087nobodyさん2012/09/29(土) 19:02:59.77ID:6ahxPXX9
WindowsServerでTritonn使ってます。
システムの移行を考えてて、groonga試したいんだけど、
MySQLのプラグインとしてgroongaを使うのはWindowsでは
できませんか?
導入手順ご存知の方がいらっしゃったら教えてください
0088nobodyさん2012/10/06(土) 18:26:42.81ID:???
ここ見たのか知らないけど、今ここでWindowsでも使えるように頑張ってるみたい
10月の後半ぐらいには使えるようになるんじゃね?
http://redmine.groonga.org/issues/1496
0089872012/10/07(日) 11:14:16.58ID:???
>>88
現在開発中なんですね。
気長に待ちます。
0090nobodyさん2012/10/23(火) 17:43:15.04ID:???
debパッケージからgroonga-server groonga-server-commonがなくなっているような…
0091nobodyさん2012/10/23(火) 17:46:46.15ID:???
groonga-server-gqtpに名前が変わったのか
0092nobodyさん2012/10/29(月) 16:07:31.55ID:???
groonga-httpdに
curl http://localhost:10041/d/status
とかすると405 not allowedになるんだけどどうすりゃいいの

nginx関連で405で調べるとpostした時のことばかりだし

groonga内包のhttpの方は、shutdownで帰ってこない
gqtpの方は問題ないんだが…

疲れた
0093nobodyさん2012/11/13(火) 18:26:33.67ID:???
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使うべき?
0094nobodyさん2013/03/14(木) 17:15:20.37ID:xn34kGqY
mroonga2.04->3.01に変えたら
Insert時にgroonga.logに
invalid utf8 string(2) on grn_str_charlen_utf8
が出るようになった・・・
文字コード照合順序はDBも、テーブルも、全文検索用インデックス設定してるカラムも
全部utf8_general_ciにしてる

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

全文検索の結果も同じ単語で今まで引っかかってたものが
半分くらいしか引っかからなくなってたり、、インデックスが壊れてる?
0096nobodyさん2013/05/10(金) 16:34:31.53ID:BGsSkY8Y
なんか、grn::dat::Trie::open failedって出るようになってしまってgroongaエンジン系全滅なんだけど。
どうやって復帰すりゃええんですかいの?
0097nobodyさん2013/05/10(金) 20:53:30.15ID:cFx0Oq6o
あ、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

もうちょっとスマートな解消方法あったんですかね?
スレチだったらごめんなさい。
0098nobodyさん2013/05/10(金) 20:54:18.17ID:???
oh... IDが変わってるけど>>96です。
ちなみに途中でgroonga及びmroongaは1.0.xから3.03にアップデートしますた。
0099nobodyさん2013/05/10(金) 21:57:12.05ID:cFx0Oq6o
続報
同名DBを作成しなおして同名テーブルを生成し直すとエラー
当然っちゃ当然ですね。

というわけで、DBをもう一回削除しなおした後、mysqlのdataディレクトリ中のmrnファイルをごっそり削除したところエラーは回避。
なんとも不安定な仕組みなもんだね。mroongaは
0100962013/05/11(土) 13:25:32.41ID:???
3.03に切り替えたからか、そもそも不安定なのか、mroongaのupdateがフリーズ(?)するようになってしまった・・・。
0101nobodyさん2013/05/31(金) 04:55:23.95ID:TNUtMHtE
windows用のmroongaをダウンロードしたいのですが、
ファイルがnot foundになります
http://packages.groonga.org/windows/mroonga/
ここを見るとファイルが一つもありません
何故ですか
0102nobodyさん2013/05/31(金) 04:59:57.68ID:???
トリトン使うことにしますた
0103nobodyさん2013/06/01(土) 00:02:56.00ID:???
>>101
http://mroonga.org/ja/docs/install.html#windows
0104nobodyさん2013/06/01(土) 00:08:19.27ID:???
>>103
not foundには変わりないけど・・どういう意味ですか?
0105nobodyさん2013/06/01(土) 00:22:35.73ID:???
>>104
ごめんなさい。確認するの忘れてた…
0106nobodyさん2013/06/01(土) 00:46:50.58ID:???
MLでWin版のテスト募集されてましたよ。
http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-May/001410.html
0107nobodyさん2013/08/31(土) NY:AN:NY.ANID:???
隔週連載groonga
http://gihyo.jp/dev/clip/01/groonga

http://qiita.com/groonga
0108nobodyさん2013/09/11(水) 20:24:29.01ID:???
頻発にテーブルupdateすると壊れるからマジで使えない
0109nobodyさん2013/10/22(火) 16:49:55.87ID:???
mroongaでカンマ区切りでインデックスさせるにはどうしたらいいすか?
0110nobodyさん2013/11/22(金) 17:20:10.93ID:???
>>92
64bit版にしたら全く問題なかった
0111nobodyさん2014/01/05(日) 03:05:09.06ID:???
mroongaとして使ってて、導入コストも低いし性能も問題ないんだけど
何の前触れもなく検索が遅くなったりするのが怖い
0112nobodyさん2014/02/05(水) 10:56:52.51ID:k8lujHJw
groonga のテーブル定義がさっぱりわかりません。
例えば wikipedia のデータをストアしたい場合、
どーすればいいのでしょうか?
0113nobodyさん2014/02/07(金) 09:34:56.28ID:???
groonga-dev のメーリングリストで教えてもらったから勝手に転載するわよ!

# <field name="id" type="string" indexed="true" stored="true" required="true"/>
# Groongaではレコードを一意に識別する値はキーとして扱う。
# 必須。required="true"相当?
table_create Articles TABLE_PAT_KEY ShortText
# <field name="title" type="text_ja" indexed="true" stored="true" required="true"/>
column_create Articles title COLUMN_SCALAR Text
0114nobodyさん2014/02/07(金) 09:36:19.44ID:???
# <field name="revision" type="int" indexed="false" stored="true"/>
column_create Articles revision COLUMN_SCALAR Int32
# <field name="user" type="string" indexed="true" stored="true"/>
column_create Articles user COLUMN_SCALAR ShortText
# <field name="userId" type="int" indexed="false" stored="true"/>
column_create Articles user_id COLUMN_SCALAR UInt64
# <field name="text_ja" type="text_ja" indexed="true" stored="true" required="true"/>
column_create Articles text_ja COLUMN_SCALAR Text
# <field name="timestamp" type="date" indexed="true" stored="true" default="now" multiValued="false"/>
# default="now"相当の機能はありません。
column_create Articles timestamp COLUMN_SCALAR Time
0115nobodyさん2014/02/07(金) 09:37:39.49ID:???
# ↓のtype="string"の転置索引用の語彙表:
# <field name="id" type="string" indexed="true" stored="true" required="true"/>
# <field name="user" type="string" indexed="true" stored="true"/>
# Bigramでトークナイズする。
table_create Terms TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram --normalizer NormalizerAuto
# indexed="true"に相当。
column_create Terms articles_text COLUMN_INDEX|WITH_POSITION|WITH_SECTION Articles _key,user

# ↓用の転置索引用の語彙表:
# <field name="title" type="text_ja" indexed="true" stored="true" required="true"/>
# <field name="text_ja" type="text_ja" indexed="true" stored="true" required="true"/>
# text_jaに相当するのは--default_tokenizer TokenMecab。
table_create JapaneseTerms TABLE_PAT_KEY ShortText --default_tokenizer TokenMecab --normalizer NormalizerAuto
# indexed="true"に相当。
column_create JapaneseTerms articles_text COLUMN_INDEX|WITH_POSITION|WITH_SECTION Articles title,text_ja
0116nobodyさん2014/02/07(金) 09:38:53.27ID:???
# ↓用の転置索引用の語彙表:
# <field name="timestamp" type="date" indexed="true" stored="true" default="now" multiValued="false"/>
# カラムに入っている値(タイムスタンプ)そのものをトークンとして使うので
# トークナイザーは指定しない。
# キーの型をTimeにしてArticles.timestamp(トークンの型)とあわせることがポイント。
table_create Times TABLE_PAT_KEY Time
# Articles.timestamp用の転置索引の定義。indexed="true"に相当
column_create Times articles_timestamp COLUMN_INDEX Articles timestamp
0117nobodyさん2014/02/07(金) 09:41:18.24ID:???
難しいだわさ。
0118nobodyさん2014/02/07(金) 15:45:35.46ID:???
groongaは一部中国語に対応してるみたいだけど、拡張すればその他の言語もいけるのかな
■ このスレッドは過去ログ倉庫に格納されています