05/06/15 00:15:27 nYzPplAZ
関連スレッド
Namazu全文検索システム
スレリンク(php板)
3:nobodyさん
05/06/15 00:16:17 nYzPplAZ
…で、どうやって入れたらいいねん
誰か教えてくれ!
4:うんち船長
05/06/15 00:22:15 nYzPplAZ
入れ方はこうらしい。
URLリンク(qwik.jp)
5:nobodyさん
05/06/15 05:04:00 I3ZAfTjX
これはもしかして
今のところRubyのみ?
6:nobodyさん
05/06/15 07:36:18
PerlとMySQLのバインディングもあるよ。
はてなで使ってるのはそれか、さらにカスタムしてるかも。
すごい使い勝手はよさそうなんで、PHPとPostgreSQLのバインディングもよろしく。<ブラジルの中の人
いざとなれば、他のPECLの見様見まねで自分でPHPバインディングつくるかも。
7:nobodyさん
05/06/15 13:39:14
GPLのライブラリはPHPライセンスと衝突するからまずいという議論が
php-dev であったよ。それで Rast のモジュールもお蔵入りになり、
namazu も pecl から撤退した。
8:nobodyさん
05/06/15 15:22:53
やっぱりGPL絡みで本家に期待するのは難しいですね。
自分でコソーリ作ってコソーリ使うか。
Namazuは将来libnmzをLGPLにするという話があるみたいだけど
分かち書きインデックスの精度に限界を感じてるので、それでPECL復帰しても使うかは微妙。
RastかSennaがいいなあ。
しかしEstraierも含め国産全文検索エンジンは何で揃いも揃ってGPLなんだろ。
コアがLGPL/BSDLで、フロントエンドの実装がGPLなら、ぐっと使いやすくなるのに。
# Namazuを引き合いに出すけど、わざわざLGPL版を書き起こさなくてもソースコードの著作権者が
# 「LGPLにライセンス変更です」って宣言すればいいだけと思う。
9:nobodyさん
05/06/15 16:32:48
Estraier はコアのLGPLであるところのQDBMライブラリのGPLな全文検索
フロントエンドな訳だけどね。
モジュールが書ける腕なら同等機能を作るのは問題ないはず。ソース見てみ。
Rast も XMLRPC 経由で使えばライセンス問題は起きないから、
仕様が公開されれば php からも使えるでしょ。
あと、Estraier の次バージョンの HyperEstraier はライブラリ形式で LGPL。
著作権者って送ったパッチが取り込まれた奴全員だよ?
一人でもヤダっていったらダメな訳だし、そもそも連絡取れないとおもう。
10:nobodyさん
05/06/18 17:36:37
msearchで十分だなー…。
URLリンク(www.kiteya.net)
11:nobodyさん
05/07/03 21:05:39
>>8
まだ見てるかな。
Rast がライセンス変更になったよ。BSDライクな奴だってさ。
そんで、phpモジュールも公開再開だって。
個人的には、そろそろ公開されそうなHyperEstraierのノードAPIに
期待してるわけですが。
12:nobodyさん
05/07/06 14:14:43
sennaもLGPLになりましたよ
13:nobodyさん
05/07/07 14:39:25
APIを見ると、文書の属性は保存できないんだね。
まぁべつのBDBなりなんなりに入れろということか。
文書管理の面からすると、RastとかHyperEstraierに比べてそのへんが面倒?
逆に文書管理に縛られずに自由にいろんなアプリに組み込めるのがいいところなのかな。
14:nobodyさん
05/12/08 05:44:00
独自パッチバージョンのMeCabが必要という時点で、
お試しで軽く触ろうという意欲が無くなるな。
sennaにしか効果ないパッチじゃなく、MeCab全体に役立つパッチとして
MeCab公式に取り込んでもらいたいところだな。
15:nobodyさん
05/12/18 21:36:06 RgxCfVuV
使ってみるか
16:nobodyさん
06/02/15 19:47:18 ZxB9YIqX
保守
17:nobodyさん
06/02/16 17:00:42 i7JO7WUs
>>14
MeCab0.9で取り込まれたっぽいからpatchはもういらないぽ
18:nobodyさん
06/06/21 02:12:06 I+o61wNk
sennaのMLのログ見てたら
ひろゆきの投稿発見した
URLリンク(lists.sourceforge.jp)
ひろゆきって自分で鯖いじったりもしてたのね
19:nobodyさん
06/06/22 01:32:26
雑誌記事が追加されてるな。
URLリンク(qwik.jp)
20:nobodyさん
06/06/22 15:24:11 +CxY78Dt
MySQLバインディングのところ、
「skipmode-patchについてはここでは触れません。」
って書いてるけど、
どこで触れてるの?
21:nobodyさん
06/06/22 17:28:13
URLリンク(lists.sourceforge.jp)
発見した。
「limitで指定されたoffsetまで冗長なIOを抑止する」んだね。
で、2ndパッチを当てたら特にはいらないと。
22:nobodyさん
06/06/22 21:44:13
なんでこのスレ書き込み少ないん?
普通に便利だと思うんだが…
23:nobodyさん
06/06/23 15:51:45
>>22
使用する機会が少ないから。
ホームページならGoogleでいいし、blogなどの検索機能でも十分だし。
それ以外ではSQLのlike検索で十分なパフォーマンスになる程度の量しかない。
24:nobodyさん
06/07/30 14:02:34 zmnCWUN9
PHPでSennaを使ってHTMLを検索するときに、インデックス生成はどうやってやればいいんでしょうか?
MySQLを使用したものしか製作したことがないので…
25:nobodyさん
06/07/30 20:10:49
>>24
PHP bindingを使う、
URLリンク(qwik.jp)
のだが、PHPバインディングの開発は止まっているみたい。
26:nobodyさん
06/08/01 13:27:49
>>24
これって24さんかな?
URLリンク(xoopscube.jp)
27:nobodyさん
06/08/03 22:25:33
>>22
Mysqlの全文検索がUTF8対応だからじゃないかな
N文字でも分かち書きでもいいけどとにかく適当に分割してやれば日本語でも検索できる
じゃあSennaって?ていう感じじゃないだろうか
28:nobodyさん
06/08/19 12:09:09
っていうか2ch絡みの企業の製品なんて使いたくもない。
29:nobodyさん
06/11/01 16:19:47
Lucidaって中身sennaだったんだね
30:nobodyさん
06/11/01 19:41:42
それをいうならLudiaだろ・・・
31:nobodyさん
06/11/02 19:03:56
>>スレリンク(php板:382番)
>382 名前:nobodyさん sage 投稿日:2006/10/05(木) 14:59:05 ID:???
>MySQLならMeCabとかで分かち書きして、UTF-8でFULLTEXTに放り込む手もある。
こんな事を書いてたら某所で取り上げられてて驚いた。(適当に要約し引用)
>MySQL&PostgreSQLの全文検索は転置インデックスだが、Sennaは完全転置インデックスを採用している。
>完全転置インデックスの採用によって、Sennaはフレーズ検索する事ができる。
>>27
フレーズ検索に対応ってのは結構大きなポイントだねぇ
32:nobodyさん
06/11/02 21:25:40
>>30
間違えた
33:nobodyさん
06/11/02 21:58:41
素直な30に萌えた。
34:nobodyさん
07/02/23 18:48:38 YFrEMN+P
1.0完成記念age!
少し前の使ってるけど
入れ直した方がいいのかな?
35:nobodyさん
07/02/24 01:43:06
>>25
期待していい?
36:nobodyさん
07/02/24 21:56:13 5ktSNz/w
>>34
入れなおして、インデックスを作りなおすといいかも。
安定性が増している・・・はず・・・
37:nobodyさん
07/02/28 00:12:15
phpバインディングまだぁ?
この前、ぐにゃらくんが PHP extensionの書き方勉強してるっていうんで
期待してたのだけれども。
38:nobodyさん
07/02/28 02:15:14
>>37
rm -rfで書き途中のヤツを消してしまった。
今は書き直して、basic APIまでできてる。
39:nobodyさん
07/02/28 02:27:09
大量のデータをDBも使わずにいじるケースが想像しにくいんだけど
PHPバインディングってどういう用途で使うの?
40:nobodyさん
07/02/28 03:35:07
>>39
んだ。特に今のSennaはストレージを持っていないから、
ドキュメントの更新は古いドキュメントの内容を渡さないといけない。
となると、実用的なアプリを書くとなると、
やはりBDBとかsqliteに別途ドキュメント情報を持っておく必要があると思うんだけどなあ・・・
41:nobodyさん
07/03/01 02:30:02 URZ8Y8TX
>>37
というわけで、作り方だけ公開してみた。
地味にAPIを増やしていく予定。
42:nobodyさん
07/03/02 00:18:50
現在PHP+MySQLでシステム運用してるけど、もしも導入が超簡単なら導入したい。
例えばsennaのファイルをどっかに置いて、ちょこっと設定ファイルをいじるだけでOK、とか。
それも現在のシステム構成に影響出さずに導入できるなら・・・
それならお金出してでも導入したい。
3万までなら出す。
43:nobodyさん
07/03/02 02:08:02
3万かよwww
44:nobodyさん
07/03/02 02:20:15
パッケージソフトとして3万ならそこそこ高価だろ。
別にたいした規模のソフトじゃないし。
45:nobodyさん
07/03/02 11:48:55
>>42
うひひ。果報は寝て待て。
>>44
オープンソースなので、勝手にrpm作って売ってもOKですよ。
46:nobodyさん
07/03/03 01:28:23
>>45
>オープンソースなので、勝手にrpm作って売ってもOK
訴えられても知らんよ・・・
47:nobodyさん
07/03/03 01:39:49
訴えられるわけないだろw
元からそういうものなんだから
48:nobodyさん
07/03/03 01:53:16
>>47
じゃあ、お前が売れば?
オープンソースの定義・概念や意味を本当に理解しているのなら、ね。
49:nobodyさん
07/03/03 09:52:29
>>42
MySQLのリビルドが必要だから超簡単とは言いづらい.
dump→リビルド→データ流し込むの作業が簡単かどうか.
LudiaはPostgreSQLのリビルドの必要なく組み込めるらしい.
>>49
NTTデータ社員乙
50:nobodyさん
07/03/03 16:33:11
>>49
>dump→リビルド→データ流し込むの作業が簡単かどうか
どっちって言うと、超難しい&めんどくさい。
dumpと流し込みはいいとして、リビルドってのが激しくイヤだ。
絶対に何かトラブルが発生するのが目に見えている。
51:nobodyさん
07/03/03 17:00:23
>>50
だったら何もしないのがいいと思うYo!
52:nobodyさん
07/03/03 18:42:15
>>51
うん、だからもっと簡単に導入できるソリューションが出るまで我慢する!
53:nobodyさん
07/03/03 21:49:06
>>39
ドキュメントは MySQL にもってるけど、Senna を MySQL に組み込むのはちょっと嫌というケースかな。
PHP バインディングで MySQL 上の ID とからめてインデックスを作っておいて、検索→ドキュメントは MySQL から引っ張り直す、みたいな。
しかし、PHP の検索部分を mod_php とかで動かすと、インデックスの読み込みで httpd のプロセスが肥大化したりしないのだろうか。
あと、ロードのオーバーヘッドとかも気になる。
そういう点では、PHPバインディングに実用性あるのかは俺も聞きたい。
54:nobodyさん
07/03/04 13:44:29
>>53
なるほどね…疎結合でいいならそういう用途もあるなあ。
プロセス肥大化については、
インデックスファイルはmmapで読み込まれるので
まあ大丈夫だとは思います。
ロードのオーバヘッドはある程度はあるかなあ。
mod_phpにもなんらかの形でインスタンスを保持しておく方法があると思うので、
それを利用すればイケるんじゃないかな…(適当)
55:53
07/03/05 15:14:34
>>54
例えば mod_php を動かしている httpd のプロセスが複数動いているとして、インデックスをロードする領域は共有されてるって事ですか?
56:54
07/03/05 16:56:40
>>55
そのとおりッ!!!
57:53
07/03/06 01:23:12
なるほど、ありがとうございます。
58:nobodyさん
07/03/09 23:18:18 KVrCgq4L
URLリンク(search.yahoo.co.jp)にYahooの検索エンジン(html用がある)
59:nobodyさん
07/03/09 23:19:26 KVrCgq4L
)の位置間違えたorz
60:nobodyさん
07/03/10 06:36:26 e0KlCCjB
世界の権威であるCOMDEXが「21世紀のスタンダード」に認定したソフトウェア、
それがホームページ制作王である。ホームページ制作王に不可能はない!
標準外のイカサマ商品の売買で生計を立てるインチキ企業工作員が、
本当は血縁でもセレブでもなんでもない「叶姉妹」や、データを捏造した社員は
月曜朝に株で大儲けしている「あるある大辞典」にコロっと騙される日本人の気質を科学的に分析し、
ホームページ制作王を使ったことのない者や、使いこなせなかった者を煽動し、
彼らに八つ当たりのデタラメな風評をデッチ上げさせたために、我が国はホームページ制作王の
標準化に失敗し、21世紀も7年目に入った今、我が国のオーソリューションは世界に大きく遅れを取っている。
世界標準・ホームページ制作王の普及を妨げる、あらゆる工作活動を糾弾せねばならない。
制作王の普及によって、標準未満のオーサリングツールしか作れない連中を淘汰しなければならない。
そして、我が国は、1日も早くホームページ制作王の標準化を達成し、世界に追いつかねばならない。
世界が認めたホームページ制作王
スレリンク(hp板)
61:nobodyさん
07/03/17 07:46:05 CM4Ebl87
URLリンク(qwik.jp)
≫インデックスのサイズ
≫n-gramインデックスなら文書の賞味サイズの2.5倍程度になります。
とあるんですが、2GBのテーブルなら約5GBのファイルが出来るってこと
なのでしょうか?
62:nobodyさん
07/03/17 08:16:54
新しいサブプロジェクトできたみたい
URLリンク(qwik.jp)
OSC2007のSennaのプレゼン見てきたけど、かなりおもしろかった。
その日のセッションの中で一番よかったかも。
63:nobodyさん
07/03/17 15:41:43
pearのインストールと同じくらい簡単になってくれないと、導入する気が起きない。
64:nobodyさん
07/03/17 23:40:44
>>62
おお!最近Senna、熱いっすねー。
65:nobodyさん
07/03/18 23:26:10
>>61
2GBの文書だったら、3GBくらいになると思う。経験的に…
66:nobodyさん
07/03/19 10:17:28
>>62
もれもOSC2007見てきたけど、なかなか良かった。
今後tritonnのドキュメントが充実していけば嬉しいな。
でも、確かにMeCabとSenna入れて、それからMySQLにパッチあてて
コンパイルしないといけないってのはメンドイな。。。。
67:nobodyさん
07/03/20 17:35:18
シェルから「senna install」だけで使えるようになってくれるなら、鯖1台につき1万ずつ払う。
68:nobodyさん
07/03/21 01:44:58
そのsenna コマンドはどうやってインストールするんだ。
$ sudo apt-get install senna
か
$ cd /usr/ports/database/senna && sudo make install
とかじゃだめなんか
69:nobodyさん
07/03/21 08:17:37
>>68
「たとえば」の話にマジレスするなよ。
要するに簡単にインストールできないかな、ってだけだ。
70:nobodyさん
07/03/22 00:44:36
激速です
休み一日潰したかいがあったよ
71:nobodyさん
07/03/22 00:46:58
>>70
具体的に何がどれくらい変わったのかね。
72:nobodyさん
07/03/22 04:09:08
0.01秒が、なんと0.001秒!
73:nobodyさん
07/03/22 05:09:20
>>71
7秒平均かかってたクエリーが.5秒以下になった
Webベースのアプリなんでこれで十分す
>>72
mysqlのコマンドってmsecレベルの計測出来るの?
74:nobodyさん
07/03/22 06:07:09
どれぐらいのデータ量で7秒が.5秒になったのか教えてくれると
俺はきっとハッピーな気分になれるんだ
75:nobodyさん
07/03/22 06:09:17
like検索してたのをsennaに置き換えたらそうなるよね
10万件くらいあればlike検索で7秒くらいかかるんじゃない?
76:nobodyさん
07/03/22 07:30:58
全然具体的じゃなかったですね、、
150万件でテーブル[int(10),text]サイズが1.5Gくらいです
検索は75の書いておられる通りで、
MATCH(title) AGAINST('+Sagasu -Iranai' IN BOOLEAN MODE)
みたいなのをlikeでやってました
“これで十分す”と書いておきながら構築中に気になった
(スレ違いな)質問いいでしょか?
URLリンク(qwik.jp)
CPU: Intel(R) Pentium(R) D CPU 3.20GHz stepping 04
なのですが、configure時の-mtuneってどれがよかったんでしょ?
あと、MySQL+PHPではsmp対応カーネルを使わないほうがいい
とググって得た情報なのですがこれは正しいですか?
というような質問をしているものですのであまり参考にならないとは
思いますが。。
77:70(↑も)
07/03/22 08:04:01
そういえばsennaがINDEXはったテーブルってdrop出来ない、、
ググると結構前に「直したよ」っていうのが見つかったんだけど
あ、tritonn-1.0.0.mysql-5.0.37.senna-1.0.2でインストールしました
(ブラジルの中の人ってここ見てるんでしょか?)
78:nobodyさん
07/03/22 08:04:48
逆に言えば、そんなにレコードが莫大でないケース(たとえば社内イントラブログとか)なら、
無理にsenna導入しなくてもLIKE検索で十分ってことだな。。。
79:nobodyさん
07/03/23 00:57:11
>>67
マジ!? 作業しにいきますよ…
手で入れるけどさ。
>>68
Senna本体のインストールは難しくないんだけどね…
MySQL + SennaをDebianやFreeBSDの公式パッケージにしたいです。
パッケージ化の実作業はともかく、
メンテナとしてパッケージを投稿するための
How Toを勉強する時間が足りないです。
>>72
うひひ。大規模サイトだと、それ結構効いてくるんすよ、
とマジレス。
80:nobodyさん
07/03/23 00:58:08
>>76
SMPじゃないほうがいいのは、
多分InnoDBのことじゃないかしら。詳しくないけど。
OpteronとかNoconaとかガンガン指定して
PHPフロントのシステムを動かしているけど、問題ないよ。
>>77
直ってるとは思うけど、
MyISAMのテーブルのドロップなら、
最悪ファイルをすべてrmすればOK。
tritonn-1.0.0はdrop indexで
一時インデックスが残るバグがあるけれど、
これも一時インデックス(#で始まるファイル名を持つ)
をrmすればOK。1.0.1を急いで入れる必要なし。
>>78
そのとおり。
将来的に困ったら導入を検討してくだせぇ…
(媚びた目をして)
81:70
07/03/23 07:21:32
>>79-80
aptで入るとうれしいですね
あといろいろ教えていただいてありがとうございます
一時インデックスはちょっと気になっていました 1.0.1でてたんですね
>>78
速度面以外でもFULLTEXT INDEXになってクエリーがシンプルになったり
MeCABの恩恵かと思いますが、カタカナや英数記号など
半角全角・大文字小文字を意識せずに検索出来るので
その辺の処理を省けたりで文書量が少ないものでも
利用方法によってはメリットがあるような気がします
82:nobodyさん
07/03/23 08:44:05
rpmパッケージ作ってくれたらお金払いたい。
83:nobodyさん
07/03/23 09:28:55
SennaインストールのためMySQLにパッチ当てる
↓
MySQLバージョンアップ
↓
MySQLにパッチ
↓
MySQLバージョンアップ
↓
MySQLにパッチ
↓
MySQLバージョンアップ
↓
MySQLにパッチ
84:nobodyさん
07/03/23 10:32:11 /lSdv2/+
MATCH (title,body) でエラーしたり全レコードHITしたり
85:nobodyさん
07/03/23 10:48:37
それはない
86:nobodyさん
07/03/23 11:02:26
>>81
あいあいー。aptで入るように頑張りたい。
正規化は自前でやっているので、MeCabなしでも恩恵を受けられます。
>>82
CentOS 4.4でx86_64でよければ作るよ!
RedHat系でi386環境がなくて…
>>83
マンドクセーよね。
やはり公式パッケージ化を…
ちなみに、Sennaの通常のバージョンアップがあっても
MySQLの再コンパイルは必要ねっす。
でも、Tritonnのバージョンアップがあったら
再コンパイルが必要っす。
MySQL 5.1以降のplugin storageでなんとかなるか、とも思ったんだけど、
やはり高速にするには本体に手を入れないといけないのでアウト。
Ludiaは本体にパッチ入れなくていいけど、
それでもPg 8.1からPg 8.2のバージョンアップで動かなくなったしなあ…
ま、Pg 8.1->8.2は中身変わりすぎなんだけど。
>>84
文字コード間違えてるとそんな挙動もあるかも。
87:nobodyさん
07/03/23 11:17:04
>>86
Fedora用のパッケージ作って売ったら儲かると思うよ。
88:nobodyさん
07/03/24 00:06:40
RHEL 用ならともかく Fedora 用じゃ儲からないだろ
89:nobodyさん
07/03/24 06:39:31
Fedora儲かるよ。ユーザー数多いし。
90:nobodyさん
07/03/24 14:47:40
Senna, Tritonn, Ludia の Portfile (MacPorts) 書いたよ。
URLリンク(lapangan.net)
MeCab のデフォルト辞書を UTF-8 で作成する代わりに lex.c に手を入れて
mecab_new() の引数で UTF-8 の辞書を指定するようにしています。
91:nobodyさん
07/03/24 21:52:10
>>90
おおお!!!ステキだ…
92:nobodyさん
07/03/25 00:04:28
>>90
GJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!
93:nobodyさん
07/03/26 00:51:35
なんで、Sennaって、MySQLやPostgreSQLの
全文検索機能に公式に採用されないの?
一体なにがじゃましているの?
理解できない。
94:nobodyさん
07/03/26 00:59:08
なんで、一介の日本語検索エンジンがMySQLやPostgreSQLの
全文検索機能に公式に採用されると考えるのか理解できない。
必要な人が組み込めばいいだけ。
英語圏の人がMeCabとSenna入れるなんて考えられんだろ。
Sennaはちょっと前にメジャーバージョンが出たばかりだし、
APIも結構変わってて安定しているとは言いがたい。
実際使ってるが動作はそこそこ安定してるけどね。
95:nobodyさん
07/03/26 01:34:44
例 phpには日本語サポートが含まれている。
今の時代に、日本語サポートが含まれるはずが無いなんて
どういう頭をしているんだ?
96:nobodyさん
07/03/26 01:38:07
ばかじゃねーの・・・・
PHPと同じようにMySQLは日本語サポートしてるよ。
でPHPと同じようにSennaバインディングは組み込まれてないよ。
どういう頭をしているんだ?
97:nobodyさん
07/03/26 01:48:12
> PHPと同じようにMySQLは日本語サポートしてるよ。
そうだな。
だから、
> なんで、一介の日本語検索エンジンが
とか
> 英語圏の人がMeCabとSenna入れるなんて考えられんだろ。
とか、
そういう考えがおかしいと言うことだな。
同じ理屈で、phpも公式に採用しない理由は無いということだな。
まあ、全文検索という機能はデータベースの方が重要だから、
phpよりも先にMySQLやPostgreSQLに採用されるべきだな。
98:nobodyさん
07/03/26 02:06:48
ふーん。
「日本語で高度な全文検索をしたい」という99%以上のユーザに関係ない機能のために
配布パッケージに日本語形態素解析エンジンや日本語の辞書や日本語の検索エンジンライブラリを
含めることなんてありえない話だと思うがな。
あっという間にパッケージの容量とコンパイル時間が5割り増しだ。
まぁ含めろとまでは言ってなくてデフォルトで
--enable-senna --senna-prefix=/usr
とかをサポートしろとかいう話なのかも知れんが。
もっとも各言語の検索エンジンがMySQLに実装されてどの言語でも全文検索がデフォルトで
できるようになったらすごいことだと思うけど。
MySQLはストレージであって高度な検索エンジンではないのでその方向性は限りなく
ありえないものだとは言っておくよ。
必要なユーザが好きな検索エンジンを勝手に組み込めばよい。
99:nobodyさん
07/03/26 02:17:01
別にMeCab使わずに日本語に特化した部分を除いても
Sennaは高速全文検索として利用価値が高いと思うけど。
100:nobodyさん
07/03/26 02:30:28
>>98
すでにMySQLやPostgreSQLにスペース区切りという、
特定の言語に依存した全文検索機能がついている以上、
高度な検索エンジンではないとか言っても説得力が無い。
全文検索が必要かどうかの話はとっくに済んでいる。
英単語区切り以外の区切り方という、国際化対応の話なんだよ。
101:nobodyさん
07/03/26 02:57:28
>>100
> すでにMySQLやPostgreSQLにスペース区切りという、
> 特定の言語に依存した全文検索機能がついている以上、
> 高度な検索エンジンではないとか言っても説得力が無い。
どこが?スコア付けもしない全文検索機能が「高度な検索エンジン」か?
ちがうだろ。
102:nobodyさん
07/03/26 03:21:49
くすくす・・・くすくす・・・くすくす・・・・・・・・・・・・・・・・・・・・・・・・ぶわーはhっははっは
URLリンク(dev.mysql.com)
MATCH() を WHERE 節で使用すると(上の例を参照)、
返されるレコードは関連性が最も高いレコードから
低いレコードの順に自動でソートされます。
103:nobodyさん
07/03/26 03:28:11
>>101
重み付けはしてるよ。使ったことないけど。まぁ調べなよ。
>>100
実用的な全文検索方法って言うのは言語ごとにちがうのであって、
日本語の場合は形態素解析を用いるのが実際便利なわけだよね。
じゃぁ日本語サポートのためだけにどこかが作った日本語形態素解析器と
エンジンを組み込むか?っていうとそれは無理なんじゃない?
って言うことを言いたいだけだ。
メジャーバージョンがリリースされたばかりのSennaを公式に組みこまないのは
理解できないとか飛躍しすぎだよ。
各言語対応のN-gramインデックスでの検索機能を組み込んで欲しいというのならまだわかる。
ただその場合Sennaが採用されるかというと安定度や実績の面で明らかに微妙だろ。
104:nobodyさん
07/03/26 03:30:00
> じゃぁ日本語サポートのためだけにどこかが作った日本語形態素解析器と
> エンジンを組み込むか?っていうとそれは無理なんじゃない?
だからなんでなんだよw
105:nobodyさん
07/03/26 03:46:49
>>104
書いてんじゃんよ。>>98
あというならライセンスの問題だってある。MySQLには商用ライセンスがあるでしょ。
個人で作ってるソフトウェアじゃあるまいし、そんなにかんたんに取り込めるもんでもないだろうよ。
106:nobodyさん
07/03/26 03:49:36
そのほかのソフトを見てみろ。
99%の人には関係ない日本語を
なんらかの形でサポートしているのが多いだろ。
それなのに日本語サポートするわけが無いなんて
理解不能。
107:nobodyさん
07/03/26 04:01:10
そういう暴論はもういいって。
他のソフトと同じくMySQLだって日本語はサポートしてるっていってんじゃん。
日本語形態素解析を用いた全文検索をサポートするかって話だろ。
今のところどのオープンソースのデータベースサーバもしてないよ。
もし取り込むにしたってInnoDBとかFalconとか取り込むにも実際買収したり
取り込むクォリティにするまでにかなり時間がかかってるわけ。
そのぐらい理解してくれよ。
108:nobodyさん
07/03/26 11:12:35
キモヲタ同士のキモキモ議論はその辺で終わりにしろ。
そんなことよりも、俺はとにかく簡単にsennaが使えるようになればそれでいいんだ。
109:nobodyさん
07/03/26 12:25:28
組み込み易くする、ドキュメントとノウハウの充実を図る、
で必要十分じゃまいか。tritonnの中の人も、たぶんそう考えている
だろうし。
まわりにsennaは良いよって言ったり、応援したりするだけで、
具体的にはなんの貢献もしていないフリーライダーの漏れが
意見する筋合いじゃないか。。。
110:nobodyさん
07/03/26 14:26:59
うひひ。盛り上がってる。
公式に組み込まれない理由…
MySQLはGPL/商用のデュアルライセンスで、
基本的にソースコードの著作権はMySQL ABが全部持っている。
(InnoDBなど例外あり)
SennaはLGPLなので取り込めない。
PgはBSDライセンスなので、これも取り込んでもらえないと思う。
とりあえず、mysql-sennaとかpostgresql-sennaみたいなパッケージが
DebianやFreeBSDで簡単に入るようになれば問題ないと思ってます。
111:nobodyさん
07/03/27 05:18:12 vEc96bSI
tritonn-1.0.1.mysql-5.0.37.senna-1.0.3でインストールして使っています
sennaというか全文検索エンジンの質問になると思うのですが…
title:NGRAM,body:MECABで主に歌手のCD発売やコンサート情報をまとめています
例えばELLEGARDENというバンドがいるのですが、
今までLIKE '%~%'でやっていた経緯もあり、利用者は
"ELLE" などで検索をかけてきます
"ELLEGARDEN"だとヒットするのですが、上記のように短縮した場合は
ヒットしないようなのですが対処の方法はあるでしょうか?
title(NGRAM)の方だけでもなんとかなればと思っています
よろしくお願いいたします
112:nobodyさん
07/03/27 11:28:08
>>111
手パッチでもよいのなら…
tritonn中にsen_index_createという関数が3つある。
この、第3引数、なんとかflagsを渡すところを、
なんとかflags | SEN_INDEX_SPLIT_ALPHA | SEN_INDEX_SPLIT_DIGIT | SEN_INDEX_SPLIT_SYMBOL
にしてみ。
すでにパッチを当てたMySQLのソースディレクトリが残っているなら、
その中からgrepしたほうが早い。
その後make && make installして、インデックスを再作成してみて。
N-gramのtitleだけ英単語の部分一致検索が出来るようになる。
113:nobodyさん
07/03/27 17:04:20 9Tb1caug
sennaで求人情報の検索サイトみたいなものを作成しようかと思っているのですが
求人の検索って基本的にチェック入れたりする方が多いですよね?
そういう意味で、求人情報検索にsenna導入ってどうでしょう?
114:nobodyさん
07/03/27 17:14:36
それを教えてくれる人を求人すればどうだ?
115:nobodyさん
07/03/27 17:25:26
>>112
うわっ、ありがとうございます!
自宅に戻りしだいやってみて結果を報告しますっ
116:nobodyさん
07/03/27 22:01:38
>>113
全文検索+他条件の検索だったら結構Sennaの得意なところ?だと思います。
全文検索が必要となった段階で導入してもいいと思います。
それまではlike '%xxx%'でしのぐといいと思うよ。
117:nobodyさん
07/03/27 23:44:08
senna を mysql 5.0.37に組み込んでbuildしてみた。
mysqldがぜんぜん起動せず、senna patch 無しの
mysqld に戻しても起動しなくなってぶち壊したかと
思ったら、libsenna.so をロードできてなかった。ldconfig
したらあっさり動いた。以上今夜のチラ裏。
118:nobodyさん
07/03/28 01:34:59
>>117
あるある。
/etc/ld.so.confをいじるか、
もしくはconfigure時に--prefix=/usrをつけるか。
119:nobodyさん
07/03/29 01:20:21
>>112
すみません
昨日はちょっと遅くなったので今日やってみました
>tritonn中にsen_index_createという関数が3つある。
3ファイル(4箇所)でよかったでしょうか
SHOW SENNA STATUSで3つともONになりました
(MECABの方もONになりましたがよかったのかな?)
結果は英単語の部分一致検索が出来るようになったのですが
時折クエリーに時間がかかる事が発生するようになりました
通常は0.1秒以内なんですが10秒とかかかるときが何度もあります
気になるのはインデックスファイルの更新時間なんですが
データのinsert,updateでは更新されていないようです
上の問題とは関係ないかもしれませんが少し気になりました
設定などで見直す所等があったらご教示お願いします
120:nobodyさん
07/03/29 01:28:36
>>119
4箇所か…
MeCabではそのフラグは無視されるから大丈夫。
うひ!10秒!それは実用にならないなぁ…
スラッシングが発生しているかも…
インデックスファイル(*.SEN*)の容量リストと
メモリ容量、
テーブルスキーマと
投げているクエリを教えてもらえるともっとよく分かるかもしれません。
インデックスファイルはmmapしているので、
同期される時間はOSによると思います。
あと、kernel 2.6.18(Debianのみ)と2.6.19でmmap周りにバグがあるので、
そこらへんのカーネルを使っている人は注意が必要かも。
121:nobodyさん
07/03/29 03:50:26
MySQL のレプリケーション環境での質問です。
Senna はスレーブとマスターの両方の MySQL にパッチ宛が必要ですか?
例えば検索クエリはスレーブの一つにしか投げないとき、マスターは Senna 無しでスレーブに Senna とかでもインデックスは更新されますか?
122:nobodyさん
07/03/29 15:37:13
>>121
大丈夫なはず。むしろ、そういう運用こそお勧めかも。
テーブルに付与されるインデックスがズレるので、
そこは気をつけないといけないかな。
123:nobodyさん
07/03/30 02:01:34
あ、なんか軽く回答してもらっちゃてありがとうございます。
インデックスがずれる?てのが分かりませんでしたが、実際に環境作ってやってみます。
124:nobodyさん
07/04/03 16:29:29
公式サイトでダウンロードできるmysql-5.0.24a-senna-0.8.1-win32.zipは
バインディング済みってことでいいのでしょうか?
125:nobodyさん
07/04/04 00:35:21
>>124
バインディング済みだけど、中身かなり古いよ…
Windows版ってそれなりに需要あるのかな…?
126:nobodyさん
07/04/04 09:37:01
ちゅっと試したい人にはありだと思うWindows版
127:nobodyさん
07/04/07 12:04:03
Sennaを使ったWikipedia検索のデモ
URLリンク(wikipedia.suenaga.name)
128:nobodyさん
07/04/12 07:33:27
素人考えで申し訳ないんだけど、ストレージを持たないことと、更新に古い値が必要なことって直接関係あるの?
sen_index_upd()でold_valueを、sen_index_update()でold_valuesを指定せずにすむだけで使い勝手が良くなると思う。
129:nobodyさん
07/04/12 08:25:53
>>128
Sennaのインデックスは転置インデックスという構造で、
単語1: 文書ID1, 文書ID2
単語2: 文書ID1, 文書ID3
という風に、単語ごとにその単語を含む文書IDのリストを持っている。
ある文書IDだけを削除する場合、
元の文書の内容がなくても、
上記のリスト中すべての単語について
指定の文書IDがあるかどうかをチェックして削除できる。
でも激遅い。実用にならない。
以下のようなリストを別途持っておけば、
削除が必要な単語についてのみ削除処理を走らせればよい。
文書ID1: 単語1, 単語2
文書ID2: 単語1
文書ID3: 単語2
このようなリストを削除時に手に入れる方法は
・上記のリストを別途インデックスとして作っておく
・元の文書を保存しておく
・元の文書を削除時に渡す(現在のSenna方式)
の3つくらいある。
というわけで間接的だが結構影響あるぞ、ストレージ。
130:nobodyさん
07/04/12 08:51:29
>>129
なるほど。削除を効率良く行うために元の文書が必要なんですね。
Sennaの場合は元の文書は別に保存されているはずで、重複して保存するのは
ディスクの無駄であるという思想でストレージを持たない、ということで合ってます?
131:nobodyさん
07/04/12 14:28:40
>>130
思想としてはたぶんそうだと思います。
Sennaページの開発ロードマップによると、
URLリンク(qwik.jp)
ストレージ機能が付いたバージョンが今月出るみたい。
たぶん、ストレージ機能が付くということは、
古い文書の内容を与えなくてもインデックスの削除や更新が
できるようになるんじゃないかな。
MySQLバインディングなんかでは必要のない機能だけど、
単体で利用する場合にはかなり便利になるんじゃない?
132:nobodyさん
07/05/12 13:09:30
tritonn てのは mysql 本家がversion 更新したら
即更新パッチ出す。。。までは行かないの?
133:nobodyさん
07/05/22 23:05:48
MySQL 5.0.41 対応出た茄子。
134:nobodyさん
07/05/30 15:10:50
サポートサービスが出た。
URLリンク(www.scs.co.jp)
135:nobodyさん
07/06/09 05:34:06
"世界初、オープンソースの高速日本語
全文検索エンジンである「Senna」を
「MySQL Enterprise Server」に組み込んだ
バイナリに対し、正式に技術サポートを提供"
この「世界初」、どこにかかるのか分からん
書き方が、うざ素敵。
136:nobodyさん
07/08/03 20:15:52 czE9BLpg
sennaを使っていて、
「ずっと死なないhttpdプロセス」が出来ることはありませんか?
ロードアベレージが恐ろしい数になっていたので見ると、
ずっと前に生まれたhttpdプロセスがたくさん居座っていました。
apache本体を落としても、それらのプロセスは何故か生きていて、
ゾンビにはなっていません
もっとも何が原因なのかは分かっていません。
普段入れていないものといえばeacceleratorとsennaくらいなので、
そのどちらかが原因じゃないか…と
137:nobodyさん
07/08/08 21:56:38 nQBYWZPX
fulltext indexを再構築する際、
*.SEN,*.SEN.i,*.SEN.i.cファイルは
前もって削除しておいた方がいいですか?
fulltext indexをdrop→create index
あるいはmyisamchkでインデックスの再構築をする時に、
これらのファイルも勝手に削除や更新をやってくれるのでしょうか?
138:137
07/08/08 22:09:15
dropしたらSEN系ファイルも削除されました
つまらない質問してスミマセン
139:nobodyさん
07/08/08 22:15:17
インデックスの作成ってコストが高そうだけど
SENファイル作るのほとんど一瞬ですね
suge-
140:nobodyさん
07/08/10 04:03:10
ブラジル版のMySQLバインディングでは、 ALTER TABLE/CREATE INDEX/DROP INDEXなどを発行すると、既存のフルテキストインデックスに付与された正規化フラグやN-gramフラグが消失してしまうという問題がありました。
よって、複数のN-gramインデックスを作成する場合には、
ALTER TABLE table
ADD FULLTEXT index_name_title USING NGRAM (title),
ADD FULLTEXT index_name_body USING NGRAM (body);
のように、1つのクエリで複数のインデックスを作成しなければなりませんでした。
----
これって前からこんな仕様だったっけ?
全然気にせずインデックス張ってたよ・・・
141:nobodyさん
07/09/05 01:05:47
>>140
GREEのパッチが入った段階でそんな仕様になった。
142:nobodyさん
07/09/21 01:32:45
自分のサイトに置くつもりで、
Sennaのサイト内検索のCGIをPerlで作ってるんだが・・・
一般公開すると仮定した場合、需要はあるだろうか?
143:142
07/09/21 01:34:54
「一般公開」っていうのは、CGIの配布のことです。
144:nobodyさん
07/09/21 07:57:44
>>143
需要はあると思う。
GPL(LGPL?)で公開するのキボン(って、Mustなのかな?)
145:nobodyさん
07/09/21 16:53:44
>>144
一応、現在では、公開するとなればGNU GPLライセンスで公開するつもり・・・。
公開できるところまで進むかが問題だが。
現在、インデックス作成の部分は、HTMLなどなどのファイルからテキストだけを
抜く処理を書けばほぼ完成。File::Extractモジュールとか使えばいいのかな・・・?
検索処理の部分は、スキンファイルっぽい処理を書いて
スニペットの処理を書けばほぼ終わり・・・。
・・・だと思うよ。
146:nobodyさん
07/09/21 23:24:20 UjaDTaQF
期待age
147:nobodyさん
07/09/22 00:06:35
>>146
㌧
SennaのPerlバインディングの資料が少なくて俺涙目www
Tie::Sennaなんかサンプルスクリプトすらエラーを起こす。
しょうがないのでモジュールのソースを見ながら作る。
一応・・・動くんだけど、どうして動くのか判らない、そんなものができつつあります。
148:nobodyさん
07/09/22 00:15:37
>>147
> 一応・・・動くんだけど、どうして動くのか判らない、そんなものができつつあります。
そういうふうにReadmeに書いておけば、自然と情報が集まってくる希ガス
149:nobodyさん
07/09/22 17:04:39
「max_exprsに、検索クエリに指定する式の最大値を指定します。」
ってどういうこと?「検索クエリの式」は判るけど、「式の値」って何?
150:nobodyさん
07/09/22 17:33:09 TclPXa4o
ググって出てきた
URLリンク(www.koders.com)
を見ると「検索式の最大の数」だそうだが・・・。
じゃぁ、「*D+ nana」でPerlのSenna::Index->query_execを経由してsen_query_execで検索するときに、
0だと検索に失敗し、他の数字(試した数字の例:1,2,3,10,32,50)を指定して検索すると「セグメンテーション違反です」と
怒られるのはどうして?
文字コードの問題と切り分けるべく英数字で検索しても失敗する。何故?
151:nobodyさん
07/09/23 16:01:45 Mbqn4OVO
>>149-150の問題があるけど
大体できたから
一応アップしてみた。
人柱版ということでよろしく。動作保証ナシ。でも俺の環境では動いた。
URLリンク(takatyan.info)
スクリプトなどのファイルは全部UTF8でエンコードしていますから
対応エディタをお使いください・・・。
152:nobodyさん
07/09/23 23:48:13
>>150の件について、
Senna::IndexのupdateメソッドにSenna::Values型のデータを渡して
インデックス作ってみたけどやっぱりダメですね・・・。
153:nobodyさん
07/09/24 23:36:00
>>151
試してみた。
なんかやたらモジュール要求されるな。
Senna の他にこんだけ追加モジュール要求された。
File::Extract
Class::Data::Inheritable
File::MMagic::XS
Spreadsheet::ParseExcel
OLE::Storage_Lite
MP3::Info
CAM::PDF
RTF::Lexer
俺の環境が Perl 5.8.0 と古いせいもあるかもしれんが…
で、なんとか mksss.pl 起動までこぎつけたが
新規 1778個
更新 0個
削除 0個
と出た後
Can't call method "mime_type" on an undefined value at mksss.pl line 156.
でこける…
直前の $e->extract($key); が undef を返してるようなんだが…
154:nobodyさん
07/09/25 00:35:24
>>153
>>151を作ったものです。
モジュールが大量に要る件についてはすみません・・・。俺自身も大量にインスコしました・・・。
えっとですね・・・それらはほとんどFile::Extractが必要とするものです。
File::Extractは、HTMLからテキストだけを抜き出すのに使ってます。
新規1778個っていうのはファイル数ですけど、そのくらいありますか?
そういえば・・・画像ファイルとかを除外する処理をしていませんね。
ですから画像ファイルをインデックスしようとして失敗しているのかも。
$e->extract($key)がundefを返したらスキップするのがいいかもしれません。
そもそもHTMLファイルだけの環境でしかテストしてませんでした・・・
$e->extract($key)がundefを返したらスキップするには、
$e->extract($key)
を
$e->extract($key) || return;
に直すといいかもしれません。
明日にでも画像ファイルなどが混在した状況でテストしなおしてみます・・・。
155:153
07/09/25 00:47:13
>>154
ども。
検索対象にしようとしたのは某 2ch 過去ログサイトで、
新規1778個っていうのはほとんど 2ch の過去ログです。
とはいえ関係ない種類のファイルも若干混じっているので
試しに明らかに HTML しか含んでいないディレクトリ指定してやってみても
新規 67個
更新 0個
削除 0個
Can't call method "mime_type" on an undefined value at mksss.pl line 156.
てな感じでした…
この67個は全部 DAT2HTML で HTML 化した 2ch の過去ログです。
漏れももう少し探ってみます…
156:nobodyさん
07/09/25 00:54:55
>>155
mksss.plの89~92行目ぐらいの
&update($index,$constants_code{$index->encoding()},\%StorageDB,\%ModifiedDB,\%TitleDB,$_);
と
print "新規: $i / @{[$#new + 1]} $_ \n";
を入れ替えて実行すると、どのファイルが問題なのか判るかと思います。
157:153
07/09/25 01:29:01
>>156
thx.
試してみたけど1個目の HTML でいきなりこけてた…
158:153
07/09/25 02:01:50
あーうちの環境依存の問題かな…
どんな HTML 食わせても File::Extract が undef 返すっぽいわ…
159:153
07/09/25 13:05:25
Perl 5.8.0 環境で動かすのは諦めておとなしく Perl 5.8.8 で動かすことにしたらすんなり先に進んだよ。
で、やたら文字化けするから変だと思ったら、
$main::IndexConvert を 1 に変えておかないとダメなのね。
それでもやっぱりスニペットが文字化けしまくるし
その関係か日本語でほとんどヒットしない。
で、さらに調べたところ、
File::Extract::Result->text() は
元の HTML の文字コードにかかわらず UTF-8 バイト列を返すっぽい (たまに UTF-8 文字列を返すこともある) ので、
164行目の
Encode::from_to($buf,$guess, $encoding) if($main::IndexConvert); は
Encode::from_to($buf, 'utf8', $encoding) if($main::IndexConvert); にしないとダメぽ。
ほか俺が使う時にデフォルト設定から変えた部分↓
$main::Indexcode = SEN_ENC_EUCJP; (MeCab に合わせて)
$main::Indexflags = SEN_INDEX_NORMALIZE; (正規化する、N-gram 使わない)
@main::GuessCode = qw/cp932 euc-jp utf8 7bit-jis/; (shiftjis より cp932 の方が無難かな)
$main::SkinDir = 'skinfiles/'; (パッケージ展開した直後の状態に合わせて)
で、文字化け問題は大方解決したんだが、
多数ヒットするキーワードで検索すると
Out of Memory というエラーメッセージが出て結果が出ないことがある。
それから Readme にも書いてあるけど TITLE とか H1, H2 とか A とかに重み付けしたスコアリングは欲しいね。
160:nobodyさん
07/09/25 18:02:17
>>157-159
これはこれはありがとうございます。
File::Extractはコントラクタにオプションを渡すと文字コードの変換をやってくれるらしいので、
それに任せることにして、mksss.pl自体での本文の変換はしないことにします・・・。
重み付けをやるには、前述のSenna::Valuesクラスを使ってのインデックス化と検索ができれば
Senna側としては可能です。
あとは、そのためのHTMLを解釈する部分が作れればよいのですが・・・。
File::Extractじゃ無理っぽいね。自前で書くしかないかなぁ。
161:nobodyさん
07/09/30 22:59:18 7soZ8WBh
Senna 1.0.9 age
162:nobodyさん
07/10/02 22:03:25
>>149
遅レスだけど、max_exprsはクエリで列挙できるキーワードの数の最大値ってことだよ。例えば、
"+ああん -いやん +ばかん -うふん"
だと4つのキーワードがそれぞれの演算子と共に評価されるけど、max_exprsを超える数については無視される。
Tritonnだとmax_exprs=32固定なので、一度に指定できるのは32個までという仕様になってる。
163:nobodyさん
07/10/20 03:01:54
sennaのインストールや使用方法がウンコするくらい簡単になったら
お金出してでも導入する。
今のように難しくて面倒くさいうちは、LIKE%%検索で乗り切る。
164:nobodyさん
07/10/21 09:18:15
likeで乗り切れるくらいならsennaいらないだろう
全文検索入れるか、まったく入れないかの選択になる
ってか、mysqlのバージョンが進めば、標準でマルチバイトの全文検索に対応するかな?
165:nobodyさん
07/10/21 20:02:03
ところで Senna っていうと MySQL で使う話ばっかり出てくる気がするんだが
Ludia 使ってる香具師おらんの?
166:nobodyさん
07/11/14 10:26:02
トリ㌧ってRPMで入れられるんだね
大分前にソースからパッチ当てて入れた時にはかなり大変だったけど
ありがたいねえ㌧㌧
167:nobodyさん
07/11/22 13:00:07 t/zyhRCZ
RPMのトリトン入れました
辞書をEUC-JPとして再構成したいのですが
/usr/libexec/mecab/mecab-dict-index -d /usr/lib/mecab/dic/ipadic/ -f utf-8 -o /usr/lib/mecab/dic/ipadic1/ -c euc-jp
とすると
/usr/lib/mecab/dic/ipadic/char.def is not found. minimum setting is used
/usr/lib/mecab/dic/ipadic/unk.def is not found. minimum setting is used.
/usr/lib/mecab/dic/ipadic/unk.def is not found. minimum setting is used.
reading /usr/lib/mecab/dic/ipadic/unk.def ... 2
emitting double-array: 100% |###########################################|
dictionary_compiler.cpp(117) [dic.size()] no dictionaries are specified
と言われてしまいます。
ipadic1の中を見ると
char.bin unk.dic
だけしかありません。
どうすればうまく辞書の再構成ができますか?
168:nobodyさん
07/11/23 12:42:00
>>164
そうだよそうだよソースだよ!
MySQLが標準で日本語の全文検索に対応してくれりゃいいんだよね。
どこかの会社が全文検索を初めから使えるようにしたバージョン発売しないかな。
169: ◆e5sgKA2q7.
07/12/02 20:38:21 h6hdy91g
>>168
住商情報システムが売ってるんじゃないの?
170:nobodyさん
07/12/02 21:19:21
>>151
をなんとかこしらえた者ですが・・・
試行錯誤の果て、Perlバインディングによる実現は挫折しました。
結局私はMySQLバインディング Tritonnに逃げました。
というか・・・
>>151はインデックスの更新のために文書データを丸ごとBerkeleyDBに保存しておくので
実は、MySQLなりでDB作って検索するのと本質的に変わらないということに気付きました。
そんなわけでMySQL+tritonnでやるのなら、マトモに動くのが書けそうです・・・な。
171:nobodyさん
08/01/25 12:13:30
Sunに買収されたことだし、ネイティブで日本語全文検索に対応してほしいね。
もちろん無償バージョンでも。
172:nobodyさん
08/02/08 17:53:36
Perlバインディングがぜんぜん動かないので
買ったはいいがPerlから乗り換える気も起きずしまいこんでいた、Rubyの入門書を
引っ張り出してきてRubyバインディングを触ってみたらこれが
簡単に動く。
あのPerlバインディングどうなってるの・・・。
173:nobodyさん
08/02/11 19:36:36
>>172
ファイトー。
174:nobodyさん
08/03/03 04:05:35 KobAduJV
tritonnにmysql_configって入ってないですか?
phpでmysqliを使えるようにするために必要みたいなのですが・・・
175:nobodyさん
08/03/03 17:40:25
tarボールの中に入ってたのでコピーしたらできました
176:nobodyさん
08/03/04 01:26:37
>>175
それはまずいんじゃ…?
mysql_config って私の認識では MySQL のインストール情報を
記録しておく (いつでも表示できるような) ミニアプリなので、
手順を踏んでインストールしないと意味がないもののような気がする。
パッケージ管理システムを採用しているような Linux ディストリビューションなら、
mysql-devel とか mysql-dev みたいな名前のパッケージを導入するのがいいのではないかな。
177:nobodyさん
08/03/04 01:43:21
>>178
確かに妙な感じになったので
RPM版をすべてアンインストールしてtarball版を使うことにしました
178:nobodyさん
08/03/04 18:06:39
たしかmysql-dev相当のがなんかしらんけどインストールされなかったよね
-configもそのひとつだったとおもう
specを調整しないといけなかったような
179:nobodyさん
08/03/26 23:50:01
2chのスレのdatファイルをgz圧縮して格納しているんだが、
これをSennaで検索できるようにしたい。
インデックスを作るだけなら単に解凍してインデックスすればいいから
いいけど、
問題はスニペット。
検索結果を20件ずつ分けて表示するとしても、
検索結果を表示するたびに20個のgz圧縮datを解凍して
スニペットを作るというのは解凍が無駄なような気がする。
どうしたものか・・・。
スニペットを消すというのも手と言えば手だが思考停止に他ならないような気がする。
そうすると、解凍したdatをキャッシュするとかですかね・・・。
ちなみに現在の格納数は2818個です。
この2818個が196052KB(圧縮したサイズ)、
今後70GB程度まで格納を続けるつもりです。
196052KBの70GBに占める割合は0.2%ぐらいです。
180:nobodyさん
08/03/28 23:39:28
解凍したものをポスグレとかMySQLに突っ込むのはダメなの?
ポスグレの場合は、大きいレコードは勝手に圧縮されるはずだから、
容量もあまり食わないし、キャッシュとかもしてくれると思う。
MySQLもそうなんじゃない?知らないけど。
181:nobodyさん
08/03/30 23:18:18
>>180
レスありがとうございます。
データベースですか・・・
一応MySQLを使っていますがまだ勉強途中で圧縮されるかどうかは知らないです。
解凍したものをキャッシュするとすればそれが最適ですかね・・・
判りました、ありがとうございました。
182:nobodyさん
08/03/31 03:05:19
MySQLは自動圧縮はないと思う。
183:nobodyさん
08/04/07 18:43:10 ubFKDoY/
トリトンのipadicのdicrcで
config-charset = EUC-JP
ってなってるんですが、これ間違いですか?
トリトンに組み込んでる辞書はUTF-8にしてるはずですよね?
EUC-JPへの辞書コンバートがどうもうまくいかず
調べているうちに見つけました
これが原因なのかどうかはまだ分かりませんが
184:nobodyさん
08/04/07 23:43:42
dirrcで設定したら正しくコンバートできました
コンバートしてもdirrcは書き換わらないので
そのままになってるみたいですね
185:nobodyさん
08/08/08 01:06:56
sage
186:nobodyさん
08/09/02 03:21:09 CDQGh37S
>>111-112の SEN_INDEX_SPLIT_ALPHA とかを有効にしたいんだけど
ソースからいれないと駄目なのかな?
TritonnのLinux x86(non RPM packages)を使っています
187:nobodyさん
08/09/11 01:53:00
>>186
バイナリ配布のものでもいけるはずですよー。
188:730=732
08/09/12 16:44:25
スレリンク(php板)
から誘導されてきました。
■環境
CentOS release 5.2 (Final) + Apache/2.2.3 + PHP 5.1.6 + Mediawiki v1.13.1 + Tritonn組み込みMySQL(URLリンク(qwik.jp)) on MW ware version 5.0.0 (メモリ256MB)
Tritonn組み込みMySQL = mecab + tritonn + senna +MySQL
■問題
Mediawikiの検索窓から、例えば検索キー「を膜上に」で検索すると、msqldが潰れます。
傾向としては、助詞を前に付けて検索を行うと、検索が終わらなくなるようです(例外はあった)。
×:「を膜上に」「と化学物質の」「と化学物質」「に毛細血管」
○:「を膜上」「膜上に」「化学物質」「化学物質の」「毛細血管」「毛細血管の」
同じようなトラブルにあった方いませんか?対応はどうしました?
■Backtrace
シェル上にはBacktraceが延々と
*** glibc detected *** /usr/sbin/mysqld: double free or corruption (out): 0x091c1018 ***
======= Backtrace: =========
/lib/libc.so.6[0x6a9b16]
/lib/libc.so.6(cfree+0x90)[0x6ad070]
/usr/lib/libsenna.so.0(sen_free+0x1d)[0x236409] 以下略
■mysqlの遺言。最後に投げたクエリー
SELECT /* Medicine */ page_id, page_namespace, page_title FROM `medntpage`,`medntsearchindex`
WHERE page_id=si_page AND MATCH(si_title) AGAINST('+ U8e381ab U8e6af9bU8e7b4b0U8e8a180U8e7aea1 ' IN BOOLEAN MODE) AND page_is_redirect=0 AND page_namespace IN (0) LIMIT 20
↑あわわ「medntsearchindex」か
189:730=732
08/09/12 16:51:46
誤:MW ware
↓
正:VMware workstation version 5.0.0
190:nobodyさん
08/09/12 17:56:34
潰れるってナニ?
コア吐いてプロセスが死んじゃうの?
191:nobodyさん
08/09/12 23:54:54
ps -eFしてみると/usr/sbin/mysqld は残っているんだけど、サーバ越しには反応しない。
/sbin/service mysql restart とか打つと、延々反応無し。 kill -9 して再起動させないと駄目。
止まっちゃうような検索キー「と化学物質」を投げた直後にシェルには、これコアダンプって言うんでしょうか?
メモリダンプしてるから多分そうなんでしょうね。
他の環境で再現されなければ、インストール方法とか環境の問題で片付けるしかなさそう。
ちなみにMediawikiにぶち込んだデータは3万件です。
どなたか、ヒントを頂ければ幸いです。とりあえず、環境を変えて再現性を取る予定。
*** glibc detected *** /usr/sbin/mysqld: double free or corruption (out): 0x091c1018 ***
======= Backtrace: =========
/lib/libc.so.6[0x6a9b16]
/lib/libc.so.6(cfree+0x90)[0x6ad070]
/usr/lib/libsenna.so.0(sen_free+0x1d)[0x236409] ・・・略
======= Memory map: ========
00110000-00263000 r-xp 00000000 fd:00 565891 /usr/lib/libsenna.so.0.0.0
00263000-00264000 rwxp 00153000 fd:00 565891 /usr/lib/libsenna.so.0.0.0
0037d000-00388000 r-xp 00000000 fd:00 720898 /lib/libgcc_s-4.1.2-20080102.so.1
・・・略・・・
b7569000-b756a000 ---p b7569000 00:00 0
b756a000-b7f6e000 rw-p b756a000 00:00 0
bfe4b000-bfe61000 rw-p bfe4b000 00:00 0 [stack]
っっっっ
192:nobodyさん
08/09/15 01:47:00
VMWare上でCentOS5.2を入れてやってみたんだけど、確かにインストールうまくいかない。init scriptが問題ある。
さらに、phpで使うときにどこで詰まるかも↓これ読んでちょっと分かった。
URLリンク(www.akiyan.com)
Tritonnの開発者の人に、CentOSですんなりインストールできないです、
と報告を上げておいたので、状況が改善するまでお待ちあれー。
193:nobodyさん
08/10/11 15:33:19
Tritonn 1.0.9使用
INSERTとかUPDATEしようとすると反応しなくなっちゃう現象発生。
/etc/init.d/mysql restartでリスタートしようとしても反応なしでkill -9しないとダメ。
再起動したあともINSERTとUPDATEしようとすると無反応。
ぐぐったらSennaで2007年にデッドロックの問題があって修正されてるみたいだけど
Tritonnに反映されてるの?
URLリンク(lists.sourceforge.jp)
194:nobodyさん
08/10/11 17:14:10
>>193
インデックスのロックかかってるみたいね。
mysqldを落としてmyisamchk -rをすれば直るはず。
稼動中のデッドロックの問題は反映されてるけど、
途中でお亡くなりになった場合にはロックがかかりっぱになることがある。