1read 100read
2012年07月WebProg458: 組み込み型全文検索エンジンSenna (268) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【勉強するのは】PHPとPerl【どっちが最初?】 (392)
Zopeってどうよ インスタンス4つめ (382)
ASP VS PHP (254)
DBの絡んだWEB制作の相場 (376)
PHP初心者勉強会やらんかね! (477)
■■これから食っていける技術の組合せは?■■ (357)

組み込み型全文検索エンジンSenna


1 :2005/06/15 〜 最終レス :2011/06/01
ないようなので立ててみました。
http://dev.razil.jp/project/senna/

2 :
関連スレッド
Namazu全文検索システム
http://pc8.2ch.net/test/read.cgi/php/992477868/

3 :
…で、どうやって入れたらいいねん
誰か教えてくれ!

4 :
入れ方はこうらしい。
http://qwik.jp/senna/8.html

5 :
これはもしかして
今のところRubyのみ?

6 :
PerlとMySQLのバインディングもあるよ。
はてなで使ってるのはそれか、さらにカスタムしてるかも。
すごい使い勝手はよさそうなんで、PHPとPostgreSQLのバインディングもよろしく。<ブラジルの中の人
いざとなれば、他のPECLの見様見まねで自分でPHPバインディングつくるかも。

7 :
GPLのライブラリはPHPライセンスと衝突するからまずいという議論が
php-dev であったよ。それで Rast のモジュールもお蔵入りになり、
namazu も pecl から撤退した。

8 :
やっぱりGPL絡みで本家に期待するのは難しいですね。
自分でコソーリ作ってコソーリ使うか。
Namazuは将来libnmzをLGPLにするという話があるみたいだけど
分かち書きインデックスの精度に限界を感じてるので、それでPECL復帰しても使うかは微妙。
RastかSennaがいいなあ。
しかしEstraierも含め国産全文検索エンジンは何で揃いも揃ってGPLなんだろ。
コアがLGPL/BSDLで、フロントエンドの実装がGPLなら、ぐっと使いやすくなるのに。
# Namazuを引き合いに出すけど、わざわざLGPL版を書き起こさなくてもソースコードの著作権者が
# 「LGPLにライセンス変更です」って宣言すればいいだけと思う。

9 :
Estraier はコアのLGPLであるところのQDBMライブラリのGPLな全文検索
フロントエンドな訳だけどね。
モジュールが書ける腕なら同等機能を作るのは問題ないはず。ソース見てみ。
Rast も XMLRPC 経由で使えばライセンス問題は起きないから、
仕様が公開されれば php からも使えるでしょ。
あと、Estraier の次バージョンの HyperEstraier はライブラリ形式で LGPL。

著作権者って送ったパッチが取り込まれた奴全員だよ?
一人でもヤダっていったらダメな訳だし、そもそも連絡取れないとおもう。

10 :
msearchで十分だなー…。
http://www.kiteya.net/script/msearch/

11 :
>>8
まだ見てるかな。
Rast がライセンス変更になったよ。BSDライクな奴だってさ。
そんで、phpモジュールも公開再開だって。
個人的には、そろそろ公開されそうなHyperEstraierのノードAPIに
期待してるわけですが。

12 :
sennaもLGPLになりましたよ

13 :
APIを見ると、文書の属性は保存できないんだね。
まぁべつのBDBなりなんなりに入れろということか。
文書管理の面からすると、RastとかHyperEstraierに比べてそのへんが面倒?
逆に文書管理に縛られずに自由にいろんなアプリに組み込めるのがいいところなのかな。

14 :
独自パッチバージョンのMeCabが必要という時点で、
お試しで軽く触ろうという意欲が無くなるな。
sennaにしか効果ないパッチじゃなく、MeCab全体に役立つパッチとして
MeCab公式に取り込んでもらいたいところだな。

15 :
使ってみるか

16 :
保守

17 :
>>14
MeCab0.9で取り込まれたっぽいからpatchはもういらないぽ

18 :
sennaのMLのログ見てたら
ひろゆきの投稿発見した
http://lists.sourceforge.jp/mailman/archives/senna-dev/2005-October/000140.html
ひろゆきって自分で鯖いじったりもしてたのね

19 :
雑誌記事が追加されてるな。
http://qwik.jp/senna/publication.html

20 :
MySQLバインディングのところ、
「skipmode-patchについてはここでは触れません。」
って書いてるけど、
どこで触れてるの?

21 :
http://lists.sourceforge.jp/mailman/archives/senna-dev/2006-March/000208.html
発見した。
「limitで指定されたoffsetまで冗長なIOを抑止する」んだね。
で、2ndパッチを当てたら特にはいらないと。

22 :
なんでこのスレ書き込み少ないん?
普通に便利だと思うんだが…

23 :
>>22
使用する機会が少ないから。
ホームページならGoogleでいいし、blogなどの検索機能でも十分だし。
それ以外ではSQLのlike検索で十分なパフォーマンスになる程度の量しかない。

24 :
PHPでSennaを使ってHTMLを検索するときに、インデックス生成はどうやってやればいいんでしょうか?
MySQLを使用したものしか製作したことがないので…

25 :
>>24
PHP bindingを使う、
http://qwik.jp/senna/PHP_binding.html
のだが、PHPバインディングの開発は止まっているみたい。

26 :
>>24
これって24さんかな?
http://xoopscube.jp/modules/xhnewbb/viewtopic.php?topic_id=3443&post_id=14886

27 :
>>22
Mysqlの全文検索がUTF8対応だからじゃないかな
N文字でも分かち書きでもいいけどとにかく適当に分割してやれば日本語でも検索できる
じゃあSennaって?ていう感じじゃないだろうか

28 :
っていうか2ch絡みの企業の製品なんて使いたくもない。

29 :
Lucidaって中身sennaだったんだね

30 :
それをいうならLudiaだろ・・・

31 :
>>http://pc8.2ch.net/test/read.cgi/php/1157467026/382
>382 名前:nobodyさん sage 投稿日:2006/10/05(木) 14:59:05 ID:???
>MySQLならMeCabとかで分かち書きして、UTF-8でFULLTEXTに放り込む手もある。

こんな事を書いてたら某所で取り上げられてて驚いた。(適当に要約し引用)
>MySQL&PostgreSQLの全文検索は転置インデックスだが、Sennaは完全転置インデックスを採用している。
>完全転置インデックスの採用によって、Sennaはフレーズ検索する事ができる。
>>27
フレーズ検索に対応ってのは結構大きなポイントだねぇ

32 :
>>30
間違えた

33 :
素直な30に萌えた。

34 :
1.0完成記念age!
少し前の使ってるけど
入れ直した方がいいのかな?

35 :
>>25
期待していい?

36 :
>>34
入れなおして、インデックスを作りなおすといいかも。
安定性が増している・・・はず・・・

37 :
phpバインディングまだぁ?
この前、ぐにゃらくんが PHP extensionの書き方勉強してるっていうんで
期待してたのだけれども。

38 :
>>37
rm -rfで書き途中のヤツを消してしまった。
今は書き直して、basic APIまでできてる。

39 :
大量のデータをDBも使わずにいじるケースが想像しにくいんだけど
PHPバインディングってどういう用途で使うの?

40 :
>>39
んだ。特に今のSennaはストレージを持っていないから、
ドキュメントの更新は古いドキュメントの内容を渡さないといけない。
となると、実用的なアプリを書くとなると、
やはりBDBとかsqliteに別途ドキュメント情報を持っておく必要があると思うんだけどなあ・・・

41 :
>>37
というわけで、作り方だけ公開してみた。
地味にAPIを増やしていく予定。

42 :
現在PHP+MySQLでシステム運用してるけど、もしも導入が超簡単なら導入したい。
例えばsennaのファイルをどっかに置いて、ちょこっと設定ファイルをいじるだけでOK、とか。
それも現在のシステム構成に影響出さずに導入できるなら・・・
それならお金出してでも導入したい。
3万までなら出す。

43 :
3万かよwww

44 :
パッケージソフトとして3万ならそこそこ高価だろ。
別にたいした規模のソフトじゃないし。

45 :
>>42
うひひ。果報は寝て待て。
>>44
オープンソースなので、勝手にrpm作って売ってもOKですよ。

46 :
>>45
>オープンソースなので、勝手にrpm作って売ってもOK
訴えられても知らんよ・・・

47 :
訴えられるわけないだろw
元からそういうものなんだから

48 :
>>47
じゃあ、お前が売れば?
オープンソースの定義・概念や意味を本当に理解しているのなら、ね。

49 :
>>42
MySQLのリビルドが必要だから超簡単とは言いづらい.
dump→リビルド→データ流し込むの作業が簡単かどうか.
LudiaはPostgreSQLのリビルドの必要なく組み込めるらしい.
>>49
NTTデータ社員乙

50 :
>>49
>dump→リビルド→データ流し込むの作業が簡単かどうか
どっちって言うと、超難しい&めんどくさい。
dumpと流し込みはいいとして、リビルドってのが激しくイヤだ。
絶対に何かトラブルが発生するのが目に見えている。

51 :
>>50
だったら何もしないのがいいと思うYo!

52 :
>>51
うん、だからもっと簡単に導入できるソリューションが出るまで我慢する!

53 :
>>39
ドキュメントは MySQL にもってるけど、Senna を MySQL に組み込むのはちょっと嫌というケースかな。
PHP バインディングで MySQL 上の ID とからめてインデックスを作っておいて、検索→ドキュメントは MySQL から引っ張り直す、みたいな。
しかし、PHP の検索部分を mod_php とかで動かすと、インデックスの読み込みで httpd のプロセスが肥大化したりしないのだろうか。
あと、ロードのオーバーヘッドとかも気になる。
そういう点では、PHPバインディングに実用性あるのかは俺も聞きたい。

54 :
>>53
なるほどね…疎結合でいいならそういう用途もあるなあ。
プロセス肥大化については、
インデックスファイルはmmapで読み込まれるので
まあ大丈夫だとは思います。
ロードのオーバヘッドはある程度はあるかなあ。
mod_phpにもなんらかの形でインスタンスを保持しておく方法があると思うので、
それを利用すればイケるんじゃないかな…(適当)

55 :
>>54
例えば mod_php を動かしている httpd のプロセスが複数動いているとして、インデックスをロードする領域は共有されてるって事ですか?


56 :
>>55
そのとおりッ!!!

57 :
なるほど、ありがとうございます。

58 :
http://search.yahoo.co.jp/promo/searchbox.htmlにYahooの検索エンジン(html用がある)

59 :
)の位置間違えたorz

60 :
世界の権威であるCOMDEXが「21世紀のスタンダード」に認定したソフトウェア、
それがホームページ制作王である。ホームページ制作王に不可能はない!
標準外のイカサマ商品の売買で生計を立てるインチキ企業工作員が、
本当は血縁でもセレブでもなんでもない「叶姉妹」や、データを捏造した社員は
月曜朝に株で大儲けしている「あるある大辞典」にコロっと騙される日本人の気質を科学的に分析し、
ホームページ制作王を使ったことのない者や、使いこなせなかった者を煽動し、
彼らに八つ当たりのデタラメな風評をデッチ上げさせたために、我が国はホームページ制作王の
標準化に失敗し、21世紀も7年目に入った今、我が国のオーソリューションは世界に大きく遅れを取っている。
世界標準・ホームページ制作王の普及を妨げる、あらゆる工作活動を糾弾せねばならない。
制作王の普及によって、標準未満のオーサリングツールしか作れない連中を淘汰しなければならない。
そして、我が国は、1日も早くホームページ制作王の標準化を達成し、世界に追いつかねばならない。
世界が認めたホームページ制作王
http://pc11.2ch.net/test/read.cgi/hp/1144987720/

61 :
http://qwik.jp/senna/IndexFile.html
≫インデックスのサイズ
≫n-gramインデックスなら文書の賞味サイズの2.5倍程度になります。
とあるんですが、2GBのテーブルなら約5GBのファイルが出来るってこと
なのでしょうか?

62 :
新しいサブプロジェクトできたみたい
http://qwik.jp/tritonn/
OSC2007のSennaのプレゼン見てきたけど、かなりおもしろかった。
その日のセッションの中で一番よかったかも。

63 :
pearのインストールと同じくらい簡単になってくれないと、導入する気が起きない。

64 :
>>62
おお!最近Senna、熱いっすねー。

65 :
>>61
2GBの文書だったら、3GBくらいになると思う。経験的に…

66 :
>>62
もれもOSC2007見てきたけど、なかなか良かった。
今後tritonnのドキュメントが充実していけば嬉しいな。
でも、確かにMeCabとSenna入れて、それからMySQLにパッチあてて
コンパイルしないといけないってのはメンドイな。。。。


67 :
シェルから「senna install」だけで使えるようになってくれるなら、鯖1台につき1万ずつ払う。

68 :
そのsenna コマンドはどうやってインストールするんだ。
$ sudo apt-get install senna

$ cd /usr/ports/database/senna && sudo make install
とかじゃだめなんか

69 :
>>68
「たとえば」の話にマジレスするなよ。
要するに簡単にインストールできないかな、ってだけだ。

70 :
激速です
休み一日潰したかいがあったよ

71 :
>>70
具体的に何がどれくらい変わったのかね。

72 :
0.01秒が、なんと0.001秒!

73 :
>>71
7秒平均かかってたクエリーが.5秒以下になった
Webベースのアプリなんでこれで十分す
>>72
mysqlのコマンドってmsecレベルの計測出来るの?

74 :
どれぐらいのデータ量で7秒が.5秒になったのか教えてくれると
俺はきっとハッピーな気分になれるんだ

75 :
like検索してたのをsennaに置き換えたらそうなるよね
10万件くらいあればlike検索で7秒くらいかかるんじゃない?

76 :
全然具体的じゃなかったですね、、
150万件でテーブル[int(10),text]サイズが1.5Gくらいです
検索は75の書いておられる通りで、
MATCH(title) AGAINST('+Sagasu -Iranai' IN BOOLEAN MODE)
みたいなのをlikeでやってました
“これで十分す”と書いておきながら構築中に気になった
(スレ違いな)質問いいでしょか?
http://qwik.jp/senna/mysql_configure.html
CPU: Intel(R) Pentium(R) D CPU 3.20GHz stepping 04
なのですが、configure時の-mtuneってどれがよかったんでしょ?
あと、MySQL+PHPではsmp対応カーネルを使わないほうがいい
とググって得た情報なのですがこれは正しいですか?
というような質問をしているものですのであまり参考にならないとは
思いますが。。

77 :
そういえばsennaがINDEXはったテーブルってdrop出来ない、、
ググると結構前に「直したよ」っていうのが見つかったんだけど
あ、tritonn-1.0.0.mysql-5.0.37.senna-1.0.2でインストールしました
(ブラジルの中の人ってここ見てるんでしょか?)

78 :
逆に言えば、そんなにレコードが莫大でないケース(たとえば社内イントラブログとか)なら、
無理にsenna導入しなくてもLIKE検索で十分ってことだな。。。

79 :
>>67
マジ!? 作業しにいきますよ…
手で入れるけどさ。
>>68
Senna本体のインストールは難しくないんだけどね…
MySQL + SennaをDebianやFreeBSDの公式パッケージにしたいです。
パッケージ化の実作業はともかく、
メンテナとしてパッケージを投稿するための
How Toを勉強する時間が足りないです。
>>72
うひひ。大規模サイトだと、それ結構効いてくるんすよ、
とマジレス。

80 :
>>76
SMPじゃないほうがいいのは、
多分InnoDBのことじゃないかしら。詳しくないけど。
OpteronとかNoconaとかガンガン指定して
PHPフロントのシステムを動かしているけど、問題ないよ。
>>77
直ってるとは思うけど、
MyISAMのテーブルのドロップなら、
最悪ファイルをすべてrmすればOK。
tritonn-1.0.0はdrop indexで
一時インデックスが残るバグがあるけれど、
これも一時インデックス(#で始まるファイル名を持つ)
をrmすればOK。1.0.1を急いで入れる必要なし。
>>78
そのとおり。
将来的に困ったら導入を検討してくだせぇ…
(媚びた目をして)

81 :
>>79-80
aptで入るとうれしいですね
あといろいろ教えていただいてありがとうございます
一時インデックスはちょっと気になっていました 1.0.1でてたんですね
>>78
速度面以外でもFULLTEXT INDEXになってクエリーがシンプルになったり
MeCABの恩恵かと思いますが、カタカナや英数記号など
半角全角・大文字小文字を意識せずに検索出来るので
その辺の処理を省けたりで文書量が少ないものでも
利用方法によってはメリットがあるような気がします

82 :
rpmパッケージ作ってくれたらお金払いたい。

83 :
SennaインストールのためMySQLにパッチ当てる

MySQLバージョンアップ

MySQLにパッチ

MySQLバージョンアップ

MySQLにパッチ

MySQLバージョンアップ

MySQLにパッチ

84 :
MATCH (title,body) でエラーしたり全レコードHITしたり

85 :
それはない

86 :
>>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 :
>>86
Fedora用のパッケージ作って売ったら儲かると思うよ。

88 :
RHEL 用ならともかく Fedora 用じゃ儲からないだろ

89 :
Fedora儲かるよ。ユーザー数多いし。

90 :
Senna, Tritonn, Ludia の Portfile (MacPorts) 書いたよ。
ttp://lapangan.net/darwinports/index.php?cmd=read&page=PrivatePortfile%2FSenna
MeCab のデフォルト辞書を UTF-8 で作成する代わりに lex.c に手を入れて
mecab_new() の引数で UTF-8 の辞書を指定するようにしています。

91 :
>>90
おおお!!!ステキだ…

92 :
>>90
GJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!

93 :
なんで、Sennaって、MySQLやPostgreSQLの
全文検索機能に公式に採用されないの?
一体なにがじゃましているの?
理解できない。

94 :
なんで、一介の日本語検索エンジンがMySQLやPostgreSQLの
全文検索機能に公式に採用されると考えるのか理解できない。
必要な人が組み込めばいいだけ。
英語圏の人がMeCabとSenna入れるなんて考えられんだろ。
Sennaはちょっと前にメジャーバージョンが出たばかりだし、
APIも結構変わってて安定しているとは言いがたい。
実際使ってるが動作はそこそこ安定してるけどね。

95 :
例 phpには日本語サポートが含まれている。
今の時代に、日本語サポートが含まれるはずが無いなんて
どういう頭をしているんだ?

96 :
ばかじゃねーの・・・・
PHPと同じようにMySQLは日本語サポートしてるよ。
でPHPと同じようにSennaバインディングは組み込まれてないよ。
どういう頭をしているんだ?

97 :
> PHPと同じようにMySQLは日本語サポートしてるよ。
そうだな。
だから、
> なんで、一介の日本語検索エンジンが
とか
> 英語圏の人がMeCabとSenna入れるなんて考えられんだろ。
とか、
そういう考えがおかしいと言うことだな。

同じ理屈で、phpも公式に採用しない理由は無いということだな。
まあ、全文検索という機能はデータベースの方が重要だから、
phpよりも先にMySQLやPostgreSQLに採用されるべきだな。

98 :
ふーん。
「日本語で高度な全文検索をしたい」という99%以上のユーザに関係ない機能のために
配布パッケージに日本語形態素解析エンジンや日本語の辞書や日本語の検索エンジンライブラリを
含めることなんてありえない話だと思うがな。
あっという間にパッケージの容量とコンパイル時間が5割り増しだ。
まぁ含めろとまでは言ってなくてデフォルトで
--enable-senna --senna-prefix=/usr
とかをサポートしろとかいう話なのかも知れんが。
もっとも各言語の検索エンジンがMySQLに実装されてどの言語でも全文検索がデフォルトで
できるようになったらすごいことだと思うけど。
MySQLはストレージであって高度な検索エンジンではないのでその方向性は限りなく
ありえないものだとは言っておくよ。
必要なユーザが好きな検索エンジンを勝手に組み込めばよい。

99 :
別にMeCab使わずに日本語に特化した部分を除いても
Sennaは高速全文検索として利用価値が高いと思うけど。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
七行プログラミング (448)
★負荷軽減対策委員会(Perl、PHP)★ (816)
PHP関連の書籍 第7版 (904)
いきなり駄スレ?blosxomユーザー2 (405)
著作権表示消してもいいCGIスクリプト (220)
C言語のCGIを語りつつ普及するスレ (527)
--log9.info------------------
偽装派遣は法律違反だ (807)
数学の出来ないPGはPGではない (396)
【孤立】偽装派遣で一人で常駐 2社目【根性】 (296)
がんばれ!!ゲイツ君 Ver2.0くらい (294)
B型のプログラマーは神 (630)
Perl使いの特徴 (393)
今の時代にMSXに相当するもの (333)
日立製作所で上手くやっていくには?V.2 (720)
プログラマのマは、魔法使いの魔 (774)
プログラミングの能力上げるにはどうすればいいの? (210)
女PGが集うスレ (702)
プログラマーはきもい (594)
偽装請負会社の社長は人格異常さ (450)
日本のソフトウェア産業がいつまでもダメな理由2 (643)
政府がMSOffice→OpenOffice移行でVBA厨マジ脂肪w (621)
日本のIT技術者にウィンドウズは作れるか? (459)
--log55.com------------------
プールの思い出
いつのまにか見かけなくなったもの Part2
小学生時代の学校でのウンチ
小中時代、年下の子に泣かされたことある?
【儀式】水泳部の思い出 2【全裸自己紹介】
小・中学校のちょっとエッチな淡い思い出
チンコの見せ合いの思い出
何歳まで半ズボンを穿いていた?