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

このエントリーをはてなブックマークに追加
161nobodyさん
Senna 1.0.9 age
162nobodyさん:2007/10/02(火) 22:03:25 ID:???
>>149
遅レスだけど、max_exprsはクエリで列挙できるキーワードの数の最大値ってことだよ。例えば、

"+ああん -いやん +ばかん -うふん"

だと4つのキーワードがそれぞれの演算子と共に評価されるけど、max_exprsを超える数については無視される。
Tritonnだとmax_exprs=32固定なので、一度に指定できるのは32個までという仕様になってる。
163nobodyさん:2007/10/20(土) 03:01:54 ID:???
sennaのインストールや使用方法がウンコするくらい簡単になったら
お金出してでも導入する。

今のように難しくて面倒くさいうちは、LIKE%%検索で乗り切る。
164nobodyさん:2007/10/21(日) 09:18:15 ID:???
likeで乗り切れるくらいならsennaいらないだろう
全文検索入れるか、まったく入れないかの選択になる
ってか、mysqlのバージョンが進めば、標準でマルチバイトの全文検索に対応するかな?
165nobodyさん:2007/10/21(日) 20:02:03 ID:???
ところで Senna っていうと MySQL で使う話ばっかり出てくる気がするんだが
Ludia 使ってる香具師おらんの?
166nobodyさん:2007/11/14(水) 10:26:02 ID:???
トリdってRPMで入れられるんだね
大分前にソースからパッチ当てて入れた時にはかなり大変だったけど
ありがたいねえdd
167nobodyさん:2007/11/22(木) 13:00:07 ID: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
だけしかありません。
どうすればうまく辞書の再構成ができますか?
168nobodyさん:2007/11/23(金) 12:42:00 ID:???
>>164
そうだよそうだよソースだよ!
MySQLが標準で日本語の全文検索に対応してくれりゃいいんだよね。

どこかの会社が全文検索を初めから使えるようにしたバージョン発売しないかな。
169 ◆e5sgKA2q7. :2007/12/02(日) 20:38:21 ID:h6hdy91g
>>168
住商情報システムが売ってるんじゃないの?
170nobodyさん:2007/12/02(日) 21:19:21 ID:???
>>151
をなんとかこしらえた者ですが・・・
試行錯誤の果て、Perlバインディングによる実現は挫折しました。
結局私はMySQLバインディング Tritonnに逃げました。

というか・・・
>>151はインデックスの更新のために文書データを丸ごとBerkeleyDBに保存しておくので
実は、MySQLなりでDB作って検索するのと本質的に変わらないということに気付きました。

そんなわけでMySQL+tritonnでやるのなら、マトモに動くのが書けそうです・・・な。
171nobodyさん:2008/01/25(金) 12:13:30 ID:???
Sunに買収されたことだし、ネイティブで日本語全文検索に対応してほしいね。
もちろん無償バージョンでも。
172nobodyさん:2008/02/08(金) 17:53:36 ID:???
Perlバインディングがぜんぜん動かないので
買ったはいいがPerlから乗り換える気も起きずしまいこんでいた、Rubyの入門書を
引っ張り出してきてRubyバインディングを触ってみたらこれが
簡単に動く。

あのPerlバインディングどうなってるの・・・。
173nobodyさん:2008/02/11(月) 19:36:36 ID:???
>>172
ファイトー。
174nobodyさん:2008/03/03(月) 04:05:35 ID:KobAduJV
tritonnにmysql_configって入ってないですか?
phpでmysqliを使えるようにするために必要みたいなのですが・・・
175nobodyさん:2008/03/03(月) 17:40:25 ID:???
tarボールの中に入ってたのでコピーしたらできました
176nobodyさん:2008/03/04(火) 01:26:37 ID:???
>>175
それはまずいんじゃ…?
mysql_config って私の認識では MySQL のインストール情報を
記録しておく (いつでも表示できるような) ミニアプリなので、
手順を踏んでインストールしないと意味がないもののような気がする。

パッケージ管理システムを採用しているような Linux ディストリビューションなら、
mysql-devel とか mysql-dev みたいな名前のパッケージを導入するのがいいのではないかな。
177nobodyさん:2008/03/04(火) 01:43:21 ID:???
>>178
確かに妙な感じになったので
RPM版をすべてアンインストールしてtarball版を使うことにしました
178nobodyさん:2008/03/04(火) 18:06:39 ID:???
たしかmysql-dev相当のがなんかしらんけどインストールされなかったよね
-configもそのひとつだったとおもう
specを調整しないといけなかったような
179nobodyさん:2008/03/26(水) 23:50:01 ID:???
2chのスレのdatファイルをgz圧縮して格納しているんだが、
これをSennaで検索できるようにしたい。

インデックスを作るだけなら単に解凍してインデックスすればいいから
いいけど、
問題はスニペット。

検索結果を20件ずつ分けて表示するとしても、
検索結果を表示するたびに20個のgz圧縮datを解凍して
スニペットを作るというのは解凍が無駄なような気がする。

どうしたものか・・・。
スニペットを消すというのも手と言えば手だが思考停止に他ならないような気がする。
そうすると、解凍したdatをキャッシュするとかですかね・・・。

ちなみに現在の格納数は2818個です。
この2818個が196052KB(圧縮したサイズ)、
今後70GB程度まで格納を続けるつもりです。

196052KBの70GBに占める割合は0.2%ぐらいです。
180nobodyさん:2008/03/28(金) 23:39:28 ID:???
解凍したものをポスグレとかMySQLに突っ込むのはダメなの?
ポスグレの場合は、大きいレコードは勝手に圧縮されるはずだから、
容量もあまり食わないし、キャッシュとかもしてくれると思う。
MySQLもそうなんじゃない?知らないけど。
181nobodyさん:2008/03/30(日) 23:18:18 ID:???
>>180
レスありがとうございます。

データベースですか・・・
一応MySQLを使っていますがまだ勉強途中で圧縮されるかどうかは知らないです。
解凍したものをキャッシュするとすればそれが最適ですかね・・・

判りました、ありがとうございました。
182nobodyさん:2008/03/31(月) 03:05:19 ID:???
MySQLは自動圧縮はないと思う。
183nobodyさん:2008/04/07(月) 18:43:10 ID:ubFKDoY/
トリトンのipadicのdicrcで
config-charset = EUC-JP
ってなってるんですが、これ間違いですか?
トリトンに組み込んでる辞書はUTF-8にしてるはずですよね?
EUC-JPへの辞書コンバートがどうもうまくいかず
調べているうちに見つけました
これが原因なのかどうかはまだ分かりませんが
184nobodyさん:2008/04/07(月) 23:43:42 ID:???
dirrcで設定したら正しくコンバートできました
コンバートしてもdirrcは書き換わらないので
そのままになってるみたいですね
185nobodyさん:2008/08/08(金) 01:06:56 ID:???
sage
186nobodyさん:2008/09/02(火) 03:21:09 ID:CDQGh37S
>>111-112の SEN_INDEX_SPLIT_ALPHA とかを有効にしたいんだけど
ソースからいれないと駄目なのかな?
TritonnのLinux x86(non RPM packages)を使っています
187nobodyさん:2008/09/11(木) 01:53:00 ID:???
>>186
バイナリ配布のものでもいけるはずですよー。
188730=732:2008/09/12(金) 16:44:25 ID:???
http://pc11.2ch.net/test/read.cgi/php/1183501450/
から誘導されてきました。
■環境
CentOS release 5.2 (Final) + Apache/2.2.3 + PHP 5.1.6 + Mediawiki v1.13.1 + Tritonn組み込みMySQL(http://qwik.jp/tritonn/) 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」か
189730=732:2008/09/12(金) 16:51:46 ID:???
誤:MW ware

正:VMware workstation version 5.0.0
190nobodyさん:2008/09/12(金) 17:56:34 ID:???
潰れるってナニ?
コア吐いてプロセスが死んじゃうの?
191nobodyさん:2008/09/12(金) 23:54:54 ID:???
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]
 っっっっ
192nobodyさん:2008/09/15(月) 01:47:00 ID:???
VMWare上でCentOS5.2を入れてやってみたんだけど、確かにインストールうまくいかない。init scriptが問題ある。
さらに、phpで使うときにどこで詰まるかも↓これ読んでちょっと分かった。
http://www.akiyan.com/blog/archives/2008/09/tritonnmysqlsen.html

Tritonnの開発者の人に、CentOSですんなりインストールできないです、
と報告を上げておいたので、状況が改善するまでお待ちあれー。
193nobodyさん:2008/10/11(土) 15:33:19 ID:???
Tritonn 1.0.9使用
INSERTとかUPDATEしようとすると反応しなくなっちゃう現象発生。
/etc/init.d/mysql restartでリスタートしようとしても反応なしでkill -9しないとダメ。
再起動したあともINSERTとUPDATEしようとすると無反応。
ぐぐったらSennaで2007年にデッドロックの問題があって修正されてるみたいだけど
Tritonnに反映されてるの?
http://lists.sourceforge.jp/mailman/archives/senna-dev/2007-September/000673.html
194nobodyさん:2008/10/11(土) 17:14:10 ID:???
>>193
インデックスのロックかかってるみたいね。
mysqldを落としてmyisamchk -rをすれば直るはず。
稼動中のデッドロックの問題は反映されてるけど、
途中でお亡くなりになった場合にはロックがかかりっぱになることがある。
195nobodyさん:2008/12/05(金) 13:31:12 ID:???
FULLTEXTで使われる、()"' 等を含んだ語や、頭に+-~のついた語を検索したい場合
どのようにエスケープするべきでしょうか?

検索は下記のように行っています。
〜WHERE match (myText) AGAINST("*E-4D+ ABC" IN BOOLEAN MODE)
196nobodyさん:2008/12/05(金) 13:41:36 ID:???
>>195
\(とか\)とか\"とか\'とか、
"+test"とか"-word"とか、
できた記憶が。
197195:2008/12/05(金) 21:59:57 ID:???
>>196
早速有難う御座います。
この方法で試してみたいと思います。
198nobodyさん:2009/01/07(水) 03:26:47 ID:???
明けましておめでとうございます
今年もよろしくです>Senna&Tritonn
199nobodyさん:2009/01/09(金) 19:32:35 ID:???
あめおめ書きこみキタコレ
今年はSennaの次期バージョンが出ますよー。名前も変わるお
200nobodyさん:2009/01/09(金) 22:57:10 ID:???
今日FreeBSDのportsにtoriton当てようとして失敗した私が通りますよっと
バージョンアップ早すぎだって
201nobodyさん:2009/02/22(日) 20:36:34 ID:???
グルーンガってamazonのsimpleDBとかっぽい感じかなー
202nobodyさん:2009/02/22(日) 23:34:10 ID:???
>>201
MonetDB的な感じでー。いちおうデータ保存についてはブログ書いてみた。
203nobodyさん:2009/02/26(木) 14:03:20 ID:5H0gEPaO
ブラジル社員乙
204nobodyさん:2009/02/26(木) 16:05:50 ID:???
find.2ch.netみたいに2chのログを検索出来るようにするには、どうすればいいのだろうか
205nobodyさん:2009/03/03(火) 04:25:34 ID:???
〜WHERE match(myText) AGAINST("+あああ -いいい" IN BOOLEAN MODE)
いける

〜WHERE match(myText) AGAINST("-いいい" IN BOOLEAN MODE)
駄目・・・

NOTのみの検索ってどうしたらいいんでしょか?
206nobodyさん:2009/03/09(月) 06:50:41 ID:???
>>205
Senna dev メーリングリスト 2008年1月 保存書庫
http://lists.sourceforge.jp/mailman/archives/senna-dev/2008-January/thread.html

上記に「NOT検索のみを行うとAND検索になってしまう件について」というのがあるので
見てもらうと判るんだが、お望みのよう検索をするには

WHERE NOT match(myText) AGAINST("いいい" IN BOOLEAN MODE)

とMATCH句を否定すればよい。
加えて、「あああ」も「いいい」もどちらも含まないレコードを探したければ
WHERE NOT match(myText) AGAINST("*D+ あああ いいい" IN BOOLEAN MODE)

tritonnこれからどうなるんだろ・・・
207205:2009/03/12(木) 03:17:36 ID:???
>>206
ありがとうございます 出来ました!
MLで
>クエリを発行する用途
について書かれていたのですが、
私の場合(Senna導入以前からの実装を引きずってますが)一旦
大分類・小分類・期日指定 で全文検索を用いずにある程度データを絞ります
抽出されたデータのうち95%程度が条件Aに起因するものとして、残り5%の
レアケースを調べたい場合に
-条件A
とやりたかったのです
208nobodyさん:2009/04/30(木) 02:23:25 ID:5kl3TBKx
amazon EC2上の Ubuntu8.04 にtritonnをインストールしようとしているのだが、
ソースをmake install した後、mysql_install_dbをするといつまでたっても終わらん。
普通このコマンドってどれくらいの時間で終わるんだ?
mysql自体ソースから入れたことないからわからんのだ・・

ちなみに以下の手順でやった

*mecabをインストール

#apt-get install mecab
#apt-get install mecab-ipadic
#apt-get install libmecab-dev

+IPA辞書をUTF-8に変換

# /usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/ipadic -o /var/lib/mecab/dic/ipadic -f euc-jp -t utf-8 -p
#/usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/juman -o /var/lib/mecab/dic/juman -f euc-jp -t utf-8

Mecabで利用する辞書の切り替え
# update-alternatives --config mecab-dictionary

(続く)
209nobodyさん:2009/04/30(木) 02:25:32 ID:5kl3TBKx
(続き)

*Sennaをビルドする

#apt-get install build-essential
senna を解凍したフォルダで
#wget http://osdn.dl.sourceforge.jp/senna/33763/senna-1.1.4.tar.gz
#tar xvzf senna-1.1.4.tar.gz
#cd senna-1.1.4
#./configure --prefix=/usr
#make
#make install
#ldconfig (念のため)

*tritonnをビルドする
#wget http://keihanna.dl.sourceforge.jp/tritonn/36449/tritonn-1.0.12-mysql-5.0.67.tar.gz
#tar xvzf tritonn-1.0.12-mysql-5.0.67.tar.gz
#cd tritonn-1.0.12-mysql-5.0.67
# apt-get install libncurses5 libncurses5-dev
#./configure --with-senna --with-mecab
#make
#make install

#groupadd mysql
#useradd -g mysql mysql
# cd /usr/local
# cd mysql
# chown -R mysql .
# chgrp -R mysql .
# bin/mysql_install_db --user=mysql
210nobodyさん:2009/04/30(木) 15:09:25 ID:???
$ time mysql_insert_db

read 0m0.594s
user 0m0.180s
sys 0m0.260s

ローカルでやってみたよ
人柱乙m9(^Д^)
211208-209:2009/04/30(木) 15:32:26 ID:A/wdozZu
>>210

orz...

6時間待っても終わらなかった・・・
212nobodyさん:2009/04/30(木) 23:12:15 ID:???
むー、Amazon EC2ためしにやってみようかしら。
213208-209:2009/05/01(金) 12:40:19 ID:AyTUx5sf
今度はamazon公式イメージのfedora8でやって、rpmで入れたらすんなりはいった。
よくわからないubuntuイメージを使ったのがいけなかったのか?
214nobodyさん:2009/05/29(金) 15:10:26 ID:QSnA4b1n
sanna+mecab+mysqlでためしてますが、検索結果がおかしい…
windowsだと200件ヒットするのにwinだと10件しかヒットしないんですけど何が原因ですか?
"win" in boolean mode

ft_min_word_len=1
など設定して再ビルドしましたがうまくいきません。
215nobodyさん:2009/05/29(金) 15:37:11 ID:???
グニャラくんのブログをしっかり読めばわかる
要するに検索漏れ
216nobodyさん:2009/05/29(金) 21:08:20 ID:???
>>214-215
漏れじゃないお!

SPLIT_ALPHA的なフラグを指定するといいです。
winのようなprefixだったら、
"*E-7 win"とかでもひっかかるかな。

ft_min_word_lenとかはSennaには全く影響がないので注意。
217nobodyさん:2009/05/29(金) 21:09:28 ID:???
218214:2009/05/31(日) 16:10:19 ID:???
お礼遅れて申し訳ないです。
*E−7で解決できました。

多くの回答いただき感謝します。

ps
wikipediaデータで実験してますが流石に全文検索は5分くらいかかりますねorz..
219nobodyさん:2009/06/02(火) 10:32:48 ID:???
>>218
5分って遅すぎ!
メモリか論理空間足りなくてスラッシングが起こってるんじゃね?
220214:2009/06/02(火) 13:56:57 ID:???
遅いですか?(ということはもっと早くなる!?)
メモリは2GでWikipediaデータは5Gぐらいです
まだチューニングをあまりしていないのでちょっといじって見ます
221nobodyさん:2009/06/04(木) 03:16:39 ID:???
>>220
0.何秒で検索できるはず。

Wikipediaデータが5Gくらいあるなら、メモリも5Gくらいないと厳しいよー。
んで、メモリ5G積むためには、OSも64bit化しないと。
222214:2009/06/04(木) 13:49:53 ID:???
>>221
ありがとうございます。
遅いのはやはりサーバスペックの問題ですね…発注してきます

度々で申し訳ないのですが、全文検索で「完全一致→非わかち書き→部分一致」の順で取り出したいのですがうまくいきません。

select title from searchindex where match(title) against('*E1,5 Google' in boolean mode) limit 10\G

*E1,5*D+などのプラグマもためしてみましたがだめでした。
show senna statusは以下のような感じです。
Table: searchindex
Key_name: si_title
Column_name: si_title
Encoding: utf8
Index_type: NGRAM
Sectionalize: OFF
Normalize: ON
Split_alpha: OFF
Split_digit: OFF
Split_symbol: OFF
Initial_n_segments: 512
Senna_keys_size: 1146887
Senna_keys_file_size: 33628160
Senna_lexicon_size: 430378
Senna_lexicon_file_size: 12656640
Senna_inv_seg_size: 136482816
Senna_inv_chunk_size: 18223104

おもに参考にしたのは以下です。
ttp://lucene.jugem.jp/?eid=158
ttp://qwik.jp/senna/query.html
223214:2009/06/04(木) 14:37:07 ID:???
どううまくいかないのかを書き忘れましたorz…
完全一致が1番目にこないです。
---------------------
Top_10_Google_hits
Google_マップ
Google_Earth
Google←これが1番にきてほしい

--------------------
224nobodyさん:2009/06/04(木) 19:15:58 ID:???
>>223
それは検索スコアの問題だから難しいす。

僕が作っている実システムでは、
・タイトル完全一致のみで検索(Sennaのインデックスを使わずに、MySQLのB-Treeインデックスを作る)
・全文検索
を分けて2回クエリ投げています。
225nobodyさん:2009/06/05(金) 12:38:21 ID:???
>>221
>Wikipediaデータが5Gくらいあるなら、メモリも5Gくらいないと厳しいよー。

DBを基礎から勉強し直せ
226nobodyさん:2009/06/05(金) 13:37:37 ID:???
デフォルトではスコア順にソートされないです。こんな風に書くとどうですかねぇ。。

select title, match(title) against('*E1,5 Google' in boolean mode) as score
from searchindex where match(title) against('*E1,5 Google' in boolean mode)
order by score desc limit 10\G
227214:2009/06/05(金) 14:23:35 ID:???
みなさまありがとうございます。
>>224さん
いろいろ調べてみましたがそのやり方しかないのかもしれません…
公式ではEプラグマで実現できそうなのですが…

>>226さん
*E数値1[,数値2]プラグマもためしたのですが公式に記載されている挙動をしていないようです。
公式の説明ではE1,5で全文一致が1つ以下なら5つスコアを下げて部分一致をとる挙動になると思うのですが完全一致も部分一致も同じスコア値になっています。
+--------------------+-------+
| page_title | score |
+--------------------+-------+
| Top_10_Google_hits | 5 |
| Google_Earth | 5 |

| Google | 5 |
+--------------------+-------+
また"Google"で完全一致がとれません。"Google*"でも前方一致以外がとれたり(Top_10_Google_hitsもとれる)します。
228nobodyさん:2009/06/06(土) 00:33:01 ID:???
>>225
全部キャッシュに載ってないと厳しいよ。
SSDならなんとかなるかもしれないけど。
229nobodyさん:2009/06/06(土) 00:37:56 ID:???
>>227
Top_10_Google_hitsは前方一致でひっかかってるよ。
_は記号扱いなので、
Top 10 Google hitsと同じような感じでひっかかります。
230nobodyさん:2009/06/06(土) 11:26:37 ID:???
>>228
これって全部キャッシュにのってないと
0.何秒が5分になるような検索エンジンなのかよw
少なくともインデックスがオンメモリであれば十分速度は出るんじゃないのか?
231nobodyさん:2009/06/06(土) 15:53:21 ID:???
>>228
お前がDB利用経験ないのはよくわかったからまず基礎を学んでから来い、な?
232nobodyさん:2009/06/06(土) 18:54:01 ID:???
>>230
5Gのコンテンツだと、経験上インデックスサイズがだいたい5Gになるんすよ。
というわけで、いつも目安としてコンテンツサイズ分はメモリとって、と言っています。
コンテンツがテストデータだったりして、同じ文言ばっかりだとコンテンツデータに比例してサイズ増えねっす。

インデックスを全部オンメモリに載せないと速度は出ないと思う。
インデックスファイルのうち、.lと.iはメモリに載っていてほしい。
i.cはメモリに載ってなくてOK。
スラッシング起きたら、どのエンジンでも速度でないよー。

>>231
基礎から学んでくるお!いいサイト教えて。
233nobodyさん:2009/06/06(土) 21:56:23 ID:???
5G5分って16.7MBpsだぞ、シーケンシャルアクセス以下だ。インデックスが使われてない状態だろうが。

>インデックスを全部オンメモリに載せないと速度は出ないと思う。
>スラッシング起きたら、どのエンジンでも速度でないよー。

「最高のパフォーマンス」と「まともな速度」の区別もつかないDQNなのかよ

>>231
>基礎から学んでくるお!いいサイト教えて。

つGoogle
234nobodyさん:2009/06/07(日) 01:20:06 ID:???
>>233
>シーケンシャルアクセス以下だ
おお、論点理解。確かにそうだねー。
235nobodyさん:2009/06/07(日) 01:41:11 ID:???
>>233
インデックスは使われていると思うよ。
実際*E-7のプラグマも動いているし、Sennaまで処理が落ちているのは間違いない。
.SEN/.SEN.lは激しくランダムアクセスが走るので、
こいつらがオンメモリにないと単なるシーケンシャルスキャンより遅くなってもおかしくないな。

というわけで、>>214はMySQLのデータディレクトリにある.SEN、.SEN.lファイルの容量を計算する。
あと、http://dsas.blog.klab.org/archives/50860867.html にあるmymemcheckで、min_memory_neededを計算する。
(.SENの総容量 + .SEN.lの総容量 + mymemcheckのmin_memory_needed)が
実メモリサイズを超えていたら危険な香り。
236nobodyさん:2009/06/08(月) 05:55:39 ID:???
>.SEN/.SEN.lは激しくランダムアクセスが走るので、
>こいつらがオンメモリにないと単なるシーケンシャルスキャンより遅くなってもおかしくないな。

オンメモリでないとシーケンシャルより遅くなるって、そんなのインデックスとは呼べないだろ
237nobodyさん:2009/06/08(月) 19:39:07 ID:???
インデックスをメモリに載るようにするのってDBの常識じゃないの?
238nobodyさん:2009/06/09(火) 19:32:51 ID:???
最高のパフォーマンスとまともなパフォーマンスの区別もつかない奴が常識を語る時代なのか…
239nobodyさん:2009/06/10(水) 01:58:34 ID:???
>>238
最高のパフォーマンス: インデックスも実データもメモリ上
まともなパフォーマンス: インデックスはメモリ上、実データはメモリ外
パフォーマンスでない: インデックスがメモリ外で、スラッシング起こしている
だろ。

B-treeインデックスもmmapにしろOSのキャッシュにしろ実メモリ上にないと遅いと思うぞ。
>>238はDBに大変詳しいようだから、>>214に何かアドバイスするといいのでは?
240nobodyさん:2009/06/10(水) 09:03:42 ID:???
パフォーマンスでない場合って検索に5分かかって当然なの?
241nobodyさん:2009/06/13(土) 14:03:05 ID:???
仮にインデックスがメモリに乗らなかったとして、それで5分はないだろ。何か間違ってるとしか。
もしスラッシングが起きてるならメモリの割り当て量間違ってるってことだし。
242nobodyさん:2009/06/19(金) 08:14:11 ID:???
とりあえず Wikipedia のデータ全文投入してインデックス作ってみたよ。

■データサイズ
37822464 2009-06-19 01:03 wiki.001.SEN
387616768 2009-06-19 01:03 wiki.001.SEN.i
1073614848 2009-06-19 01:03 wiki.001.SEN.i.c
1073741824 2009-06-19 01:03 wiki.001.SEN.i.c.001
247463936 2009-06-19 01:02 wiki.001.SEN.i.c.002
801185792 2009-06-19 01:03 wiki.001.SEN.l
4686036956 2009-06-19 01:03 wiki.MYD
15630336 2009-06-19 01:03 wiki.MYI

MYD と MYI の合計が 5G 弱、
SEN と SEN.i と SEN.l の合計が 1.2G 強。

■mysqld メモリ使用量
インデックス作成時 → 1.3GB
検索時 → 60MB

■検索にかかる時間
SELECT * FROM wiki WHERE MATCH(text) AGAINST(?) LIMIT 10
で0.5秒くらい


■環境
D945GCLF (ATOM 230)
メモリ: 2GB
OS: Debian 5.0.1
243nobodyさん:2009/06/19(金) 08:44:14 ID:???
おっと書きかけで送信してしまった

■検索にかかる時間 … 「wiki」や「space」等1万件以上ヒットする単語で検索

SELECT * FROM wiki WHERE MATCH(text) AGAINST(?) LIMIT 10
→初回0.2秒、2回目以降2ミリ秒

SELECT * FROM wiki WHERE MATCH(text) AGAINST(?) LIMIT 10000
→初回40〜60秒程度、2回目以降1.5秒程度

■環境

D945GCLF (ATOM 230)
メモリ: 2GB
HDD: 40GB の IDE
OS: Debian 5.0.1 (32bit)


…ということで、LIMIT さえ効かせれば1秒以下で検索できるよ。
オンメモリじゃないとシーケンシャルスキャンより遅くなってもおかしくないとかアホじゃね?
>>218は LIMIT 句付けてないんちゃう?
それかクエリ間違っててインデックス使われてないとか
244nobodyさん:2009/06/19(金) 09:01:10 ID:???
>>242-243
それか!全件結果を返すのはそりゃ重い。

.SENと.SEN.lがオンメモリなら十分速度出ると思うよー!
この2つの一部がページアウトしてるとマジキツいっす。

2回目以降異常に早いのはクエリキャッシュが効いてそう。
/* SQL_NO_CACHE */を入れてみると本来の2回目以降の速度が計れるんじゃないかな。
245242:2009/06/20(土) 05:04:34 ID:???
測定基準整理して計り直してみた。

OS 起動直後、インデックスがキャッシュに一切載っていない状態で
「wiki」で検索 (1万件以上ヒットする) し、応答時間を測定。

1回目
LIMIT 10: 0.643秒
LIMIT 100: 1.129秒
LIMIT 1000: 5.787秒
LIMIT 10000: 49.523秒

2回目以降 (SQL_NO_CACHE 無しの場合)
LIMIT 10: 0.007秒
LIMIT 100: 0.029秒
LIMIT 1000: 0.203秒
LIMIT 10000: 1.467秒

2回目以降 (SQL_NO_CACHE 指定の場合)
LIMIT 10: 0.007秒
LIMIT 100: 0.029秒
LIMIT 1000: 0.202秒
LIMIT 10000: 1.462秒

SQL_NO_CACHE 指定の有無は優位な差を生まなかった。
246242:2009/06/20(土) 05:06:04 ID:???
搭載メモリ 2GB だったのを 512MB に減らした状態でも測定してみた。
SEN と SEN.l の合計が 800MB 強なので、明らかに物理メモリよりインデックスの方が大きい状態。

1回目
LIMIT 10: 0.634秒
LIMIT 100: 1.104秒
LIMIT 1000: 5.787秒
LIMIT 10000: 50.292秒

2回目以降 (SQL_NO_CACHE 無しの場合)
LIMIT 10: 0.007秒
LIMIT 100: 0.030秒
LIMIT 1000: 0.207秒
LIMIT 10000: 42.752秒

2回目以降 (SQL_NO_CACHE 指定の場合)
LIMIT 10: 0.007秒
LIMIT 100: 0.030秒
LIMIT 1000: 0.208秒
LIMIT 10000: 42.771秒

LIMIT 1000 まではメモリ 2GB の時と同じ状態。
今回も SQL_NO_CACHE 指定の有無は優位な差を生まなかった。
247242:2009/06/20(土) 05:18:28 ID:???
メモリ 512MB 環境下で LIMIT 10000 の時のみ
2回目の数値が極端に悪くなって1回目と大差なくなっているのは、
1回目検索時に読み込まれたデータが多すぎてキャッシュから溢れたためだろう。

実運用では同じ検索語が連続してくることなど希だから
このキャッシュミス状態はかなり起きやすくなるはず。
なのでインデックスは全部オンメモリであることが強く望ましいのは間違いない。
が、だからといって
>>235
> こいつらがオンメモリにないと単なるシーケンシャルスキャンより遅くなってもおかしくない
などというアホなこともない。

きちんと LIMIT 切ってやればメモリに全く載って無い状態ですら1秒で帰ってくる。
(ORDER BY とかつけてると LIMIT 付けててもダメな予感がするがまだ試してない)

また、

>>230
> 5Gのコンテンツだと、経験上インデックスサイズがだいたい5Gになるんすよ。

そういうケースもあるのかもしれんが、少なくとも今回試した Wikipeida 全文では
コンテンツ 5GB 弱に対してインデックス 1GB 弱になった。
よって 2GB で十分オンメモリになる。


それにしても、今回テストした ATOM で IDE 40GB の HDD で OS 起動直後で
1万件ヒットする単語でも1分越えしなかったわけだが、
>>214はいったいどういう環境とクエリで検索したんだ?
248nobodyさん:2009/06/22(月) 01:12:14 ID:???
64ビットOSにしてメモリ5Gは積まないととか言ってた奴はどこ行ったの?
249nobodyさん:2009/08/03(月) 13:00:48 ID:???
通常のMysqlで動作が遅かったため

tritonn-1.0.12-mysql-5.0.67-win32.zip
をインストールしてみたのですが、
何分かInsert Selectを連続して行っているとDBが落ちてしまい
MySQLAdministratorから「Can't crete a new thread errno12」とでて
ログインできなくなったり、
できてもスキーマやテーブル一覧が取得できなくなります。
この状態で.NETからSelectなどの処理を行うと
「Got error 12 from storage engine」
とでて処理できません。
Mysql6では同様の動作が問題なく継続できていました。

サービスを再起動すると復活するのですが、
同じように何分か処理を走らすと同様の状態になります。
メモリなどハードウェアはまだ余裕の状態です。

何が原因でどうしたらいいかなど八方塞になってしまいました。
どなたかアドバイスいただけませんでしょうか。
250nobodyさん:2009/08/17(月) 16:21:20 ID:ha4chuFj
人いない

sennachkドキュメントないんだけどこれ使えるの?
251nobodyさん:2009/08/17(月) 17:48:41 ID:???
>>250
まあ今時こんな性能が悪いものは、みんあ使わんってことだ
252nobodyさん:2009/08/17(月) 22:15:10 ID:a7sy8cob
>>251 さんのオヌヌメ教えて!
253nobodyさん:2009/09/05(土) 21:32:55 ID:4Qwo+WsH
mecabの辞書がUTF-8になってるから、
sjisのdbでは使えないと思ってたんだけど
やってみたら使えてるみたい。
ngramインデックスの場合、mecabの辞書に気を遣う必要ないという認識でOKですか?
254nobodyさん:2009/09/05(土) 23:48:39 ID:???
そりゃngramインデックスならmecab関係ないだろ。
mecabなしでも使えるわけだし。
255nobodyさん:2010/03/06(土) 02:05:32 ID:???
test
256nobodyさん:2010/03/25(木) 03:31:01 ID:txB00Cpn
あれ、半年もレスなかったのか・・・
なにか他にいいのが出てるの?
アゲてみる、ごめん
257nobodyさん:2010/04/04(日) 09:24:54 ID:f5hMLlFL
tritonn使ってみようかと思ってるんですが、
将来的にDBをマシン間で引越しするとき、MyISAMは単純にファイルコピーだけ、
ダンプ→インポートしなくても引越しできるようですが、付加されたsenna関連である
sen.*についても単純にファイルコピーだけでOKなんでしょうか。
258nobodyさん:2010/04/07(水) 02:19:15 ID:nn78rN3+
どんな挙動するのかは知らないけど
センファイルは殲滅しておk
やたらでかいし、バックアップ対象からも外してるよ
インデックス張り直せば勝手に作るし
259nobodyさん:2010/04/16(金) 10:09:21 ID:dbk/orQU
トリトン使ってるけど
時間によって検索結果に出たり出なかったりする時があるみたい
インデックスへの反映具合を確認する方法があればいいんだけど
260nobodyさん:2010/05/16(日) 02:14:19 ID:???
Senna、Lucene、Solrなど
オープンソース系検索エンジンの
性能比較をやってるHPありませんか?
261nobodyさん:2010/05/16(日) 16:24:02 ID:???
以前見たような気がするからググれば出てくるんじゃね?
262nobodyさん:2010/05/31(月) 10:03:05 ID:ldCXIDLw
Tritonnの2ind機能を使って、
select * from table force index(counter) where match(title,body) against("*W1,2 てすと" in boolean mode) order by counter desc limit 100,100
という使い方は出来ないのでしょうか?
一応検索結果は得られるのですが、limit 0,100としたのと同じように、必ず先頭からの結果になってしまいます。
force index(counter)を消せば求めている結果になります。
環境はCentOSにsenna1.1.5、Tritonn1.0.12-mysql-5.0.87、
WindowsにはTritonn1.0.12-mysql-5.0.67なのですがどちらも結果は同じです。
263nobodyさん:2010/06/02(水) 00:02:33 ID:pNSVCSiw
1 :名無しさん@どっと混む[]:2009/12/14(月) 20:45:15 ID:unnBMLw10
高根社長のSM趣味サイトMaskRと
副業のSMクラブ銀座プレジス・動画配信専門リアルミストレスばかり語られるが
高根社長の本業コムラッドについても語ろう

銀座プレジス
http://www.prezis.jp/top.htm

MaskR
http://maskr.com/

【腹黒樹里高根】銀座プレジス3【客の情報開示】
http://set.bbspink.com/test/read.cgi/sm/1273492895/

【腹黒樹里】プレジスを語ろう2【周年イベント大失敗】
http://set.bbspink.com/test/read.cgi/sm/1262702507/

プレジスを語ろう
http://set.bbspink.com/test/read.cgi/sm/1246009466/

動画配信専門リアルミストレスってどうよ?
http://set.bbspink.com/test/read.cgi/sm/1249183350/

9 :名無しさん@どっと混む:2010/01/03(日) 18:27:00 ID:RSEbBiG0O
高値はもう大麻やめたの?

10 :名無しさん@どっと混む:2010/01/04(月) 05:15:29 ID:A3l1qdv+O
タカネ社長ってどうやってばれないように脱税してんだろ?
億単位で脱税して億ション暮らしなんて凄いよな
監査役の奥さんもグルなのか?
264nobodyさん:2010/06/02(水) 00:03:25 ID:pNSVCSiw
18 :名無しさん@どっと混む:2010/01/07(木) 09:26:06 ID:5NL2jyJpO
高根はMASKRでレイプ仲間募集するのやめたんだね
mixiで募集中か

21 :名無しさん@どっと混む:2010/01/10(日) 19:36:45 ID:FdRwgXUTO
風俗店やってるってことは高根社長は暴力団と繋がってるんだね
どこの組にいくらみかじめ料払ってるんだかw

23 :名無しさん@どっと混む:2010/01/23(土) 03:43:12 ID:Pdcv8aq0O
タカネ社長未成年に酒飲ませてレイプ

24 :名無しさん@どっと混む:2010/01/29(金) 18:16:06 ID:zMwtdkIsO
高根社長のレイプ趣味は病気だから治らない

25 :名無しさん@どっと混む:2010/02/01(月) 01:39:32 ID:uaH5mo2nO
前科者

26 :名無しさん@どっと混む:2010/02/09(火) 00:52:46 ID:JwGmN2cG0
>>25
容疑はレイプ?買春?管理売春?公然猥褻?薬物?脱税?詐欺?傷害?

28 :名無しさん@どっと混む:2010/02/14(日) 22:56:30 ID:lykq8x1VO
どこかのスレで人を死に追いやったと書いてあった

33 :名無しさん@どっと混む:2010/03/04(木) 12:49:19 ID:J8YxaRGO0
金がないって脱税がばれて追徴課税でも来たか?
せっかく脱税の隠れ蓑にプレジス営業してるのに残念だったなw

38 :名無しさん@どっと混む:2010/03/12(金) 21:09:53 ID:L0W4+sivO
首吊り首絞めプレイ大好き高根英哉
265nobodyさん:2010/06/02(水) 00:04:26 ID:pNSVCSiw
53 :名無しさん@どっと混む:2010/05/17(月) 13:14:06 ID:E/7OZVtz0
>>18
高根英哉blogでレイプ仲間募集中

私とともにマスクの女どもを弄ぶ仲間を募集する
急に思いついたら連絡をして、集まれるような仲間だ
だから、複数名募集するし、いついつという日時があるわけでもない
条件は以下のとおりだ
    ・SMを実践している、または興味がある
    ・マスクを用意できる
    ・都内でイベント参加できる
    ・イベント内容およびこの仲間を通じて知りえた情報を口外しない
    ・成人男子である
    ・携帯電話および携帯メールアドレスを私に公開できる
    ・酒が好きである
希望者は私宛にメールを送ってほしい
全員が参加できるわけでもないので、こちらの選択に任せてもらう
なるべく想いを書いてもらうほうがわかりやすいし
経験や顔写真も歓迎。
[email protected]
[email protected]
[email protected]
266262:2010/06/02(水) 08:04:37 ID:kP3cOHz1
>>262はtritonnの仕様っぽいですね。
これはどうしようも無いことなのかな?
てっきり出来ると思ってたからがっくし。
267nobodyさん:2011/05/22(日) 12:38:20.48 ID:gdrY9aId
groonga来てるから話題減ってる気がするけど、あげ。
268nobodyさん:2011/06/01(水) 17:59:58.68 ID:???
limit a,b 指定で b の抽出件数指定は効くんだけど、a がゼロから効かない。
100,10 や 1000, 10 と指定しても、0, 10 と同じ結果。
フルテキストインデックス再構築したけど同じ。
インストした頃はちゃんと表示されたはずなんだが…。
269電脳プリオン 忍法帖【Lv=40,xxxPT】(2+0:8) 【31.3m】
>>1のリンク先が見れない