組み込み型全文検索エンジンSenna
■ このスレッドは過去ログ倉庫に格納されています
0001うんこ船長
2005/06/15(水) 00:14:13ID:nYzPplAZhttp://dev.razil.jp/project/senna/
0220214
2009/06/02(火) 13:56:57ID:???メモリは2GでWikipediaデータは5Gぐらいです
まだチューニングをあまりしていないのでちょっといじって見ます
0221nobodyさん
2009/06/04(木) 03:16:39ID:???0.何秒で検索できるはず。
Wikipediaデータが5Gくらいあるなら、メモリも5Gくらいないと厳しいよー。
んで、メモリ5G積むためには、OSも64bit化しないと。
0222214
2009/06/04(木) 13:49:53ID:???ありがとうございます。
遅いのはやはりサーバスペックの問題ですね…発注してきます
度々で申し訳ないのですが、全文検索で「完全一致→非わかち書き→部分一致」の順で取り出したいのですがうまくいきません。
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
0223214
2009/06/04(木) 14:37:07ID:???完全一致が1番目にこないです。
---------------------
Top_10_Google_hits
Google_マップ
Google_Earth
Google←これが1番にきてほしい
…
--------------------
0224nobodyさん
2009/06/04(木) 19:15:58ID:???それは検索スコアの問題だから難しいす。
僕が作っている実システムでは、
・タイトル完全一致のみで検索(Sennaのインデックスを使わずに、MySQLのB-Treeインデックスを作る)
・全文検索
を分けて2回クエリ投げています。
0225nobodyさん
2009/06/05(金) 12:38:21ID:???>Wikipediaデータが5Gくらいあるなら、メモリも5Gくらいないと厳しいよー。
DBを基礎から勉強し直せ
0226nobodyさん
2009/06/05(金) 13:37:37ID:???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
0227214
2009/06/05(金) 14:23:35ID:???>>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もとれる)します。
0229nobodyさん
2009/06/06(土) 00:37:56ID:???Top_10_Google_hitsは前方一致でひっかかってるよ。
_は記号扱いなので、
Top 10 Google hitsと同じような感じでひっかかります。
0230nobodyさん
2009/06/06(土) 11:26:37ID:???これって全部キャッシュにのってないと
0.何秒が5分になるような検索エンジンなのかよw
少なくともインデックスがオンメモリであれば十分速度は出るんじゃないのか?
0232nobodyさん
2009/06/06(土) 18:54:01ID:???5Gのコンテンツだと、経験上インデックスサイズがだいたい5Gになるんすよ。
というわけで、いつも目安としてコンテンツサイズ分はメモリとって、と言っています。
コンテンツがテストデータだったりして、同じ文言ばっかりだとコンテンツデータに比例してサイズ増えねっす。
インデックスを全部オンメモリに載せないと速度は出ないと思う。
インデックスファイルのうち、.lと.iはメモリに載っていてほしい。
i.cはメモリに載ってなくてOK。
スラッシング起きたら、どのエンジンでも速度でないよー。
>>231
基礎から学んでくるお!いいサイト教えて。
0233nobodyさん
2009/06/06(土) 21:56:23ID:???>インデックスを全部オンメモリに載せないと速度は出ないと思う。
>スラッシング起きたら、どのエンジンでも速度でないよー。
「最高のパフォーマンス」と「まともな速度」の区別もつかないDQNなのかよ
>>>231
>基礎から学んでくるお!いいサイト教えて。
つGoogle
0235nobodyさん
2009/06/07(日) 01:41:11ID:???インデックスは使われていると思うよ。
実際*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)が
実メモリサイズを超えていたら危険な香り。
0236nobodyさん
2009/06/08(月) 05:55:39ID:???>こいつらがオンメモリにないと単なるシーケンシャルスキャンより遅くなってもおかしくないな。
オンメモリでないとシーケンシャルより遅くなるって、そんなのインデックスとは呼べないだろ
0237nobodyさん
2009/06/08(月) 19:39:07ID:???0238nobodyさん
2009/06/09(火) 19:32:51ID:???0239nobodyさん
2009/06/10(水) 01:58:34ID:???最高のパフォーマンス: インデックスも実データもメモリ上
まともなパフォーマンス: インデックスはメモリ上、実データはメモリ外
パフォーマンスでない: インデックスがメモリ外で、スラッシング起こしている
だろ。
B-treeインデックスもmmapにしろOSのキャッシュにしろ実メモリ上にないと遅いと思うぞ。
>>238はDBに大変詳しいようだから、>>214に何かアドバイスするといいのでは?
0240nobodyさん
2009/06/10(水) 09:03:42ID:???0241nobodyさん
2009/06/13(土) 14:03:05ID:???もしスラッシングが起きてるならメモリの割り当て量間違ってるってことだし。
0242nobodyさん
2009/06/19(金) 08:14:11ID:???■データサイズ
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
0243nobodyさん
2009/06/19(金) 08:44:14ID:???■検索にかかる時間 … 「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 句付けてないんちゃう?
それかクエリ間違っててインデックス使われてないとか
0244nobodyさん
2009/06/19(金) 09:01:10ID:???それか!全件結果を返すのはそりゃ重い。
.SENと.SEN.lがオンメモリなら十分速度出ると思うよー!
この2つの一部がページアウトしてるとマジキツいっす。
2回目以降異常に早いのはクエリキャッシュが効いてそう。
/* SQL_NO_CACHE */を入れてみると本来の2回目以降の速度が計れるんじゃないかな。
0245242
2009/06/20(土) 05:04:34ID:???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 指定の有無は優位な差を生まなかった。
0246242
2009/06/20(土) 05:06:04ID:???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 指定の有無は優位な差を生まなかった。
0247242
2009/06/20(土) 05:18:28ID:???2回目の数値が極端に悪くなって1回目と大差なくなっているのは、
1回目検索時に読み込まれたデータが多すぎてキャッシュから溢れたためだろう。
実運用では同じ検索語が連続してくることなど希だから
このキャッシュミス状態はかなり起きやすくなるはず。
なのでインデックスは全部オンメモリであることが強く望ましいのは間違いない。
が、だからといって
>>235
> こいつらがオンメモリにないと単なるシーケンシャルスキャンより遅くなってもおかしくない
などというアホなこともない。
きちんと LIMIT 切ってやればメモリに全く載って無い状態ですら1秒で帰ってくる。
(ORDER BY とかつけてると LIMIT 付けててもダメな予感がするがまだ試してない)
また、
>>230
> 5Gのコンテンツだと、経験上インデックスサイズがだいたい5Gになるんすよ。
そういうケースもあるのかもしれんが、少なくとも今回試した Wikipeida 全文では
コンテンツ 5GB 弱に対してインデックス 1GB 弱になった。
よって 2GB で十分オンメモリになる。
それにしても、今回テストした ATOM で IDE 40GB の HDD で OS 起動直後で
1万件ヒットする単語でも1分越えしなかったわけだが、
>>214はいったいどういう環境とクエリで検索したんだ?
0248nobodyさん
2009/06/22(月) 01:12:14ID:???0249nobodyさん
2009/08/03(月) 13:00:48ID:???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では同様の動作が問題なく継続できていました。
サービスを再起動すると復活するのですが、
同じように何分か処理を走らすと同様の状態になります。
メモリなどハードウェアはまだ余裕の状態です。
何が原因でどうしたらいいかなど八方塞になってしまいました。
どなたかアドバイスいただけませんでしょうか。
0250nobodyさん
2009/08/17(月) 16:21:20ID:ha4chuFjsennachkドキュメントないんだけどこれ使えるの?
0252nobodyさん
2009/08/17(月) 22:15:10ID:a7sy8cob0253nobodyさん
2009/09/05(土) 21:32:55ID:4Qwo+WsHsjisのdbでは使えないと思ってたんだけど
やってみたら使えてるみたい。
ngramインデックスの場合、mecabの辞書に気を遣う必要ないという認識でOKですか?
0254nobodyさん
2009/09/05(土) 23:48:39ID:???mecabなしでも使えるわけだし。
0255nobodyさん
2010/03/06(土) 02:05:32ID:???0256nobodyさん
2010/03/25(木) 03:31:01ID:txB00Cpnなにか他にいいのが出てるの?
アゲてみる、ごめん
0257nobodyさん
2010/04/04(日) 09:24:54ID:f5hMLlFL将来的にDBをマシン間で引越しするとき、MyISAMは単純にファイルコピーだけ、
ダンプ→インポートしなくても引越しできるようですが、付加されたsenna関連である
sen.*についても単純にファイルコピーだけでOKなんでしょうか。
0258nobodyさん
2010/04/07(水) 02:19:15ID:nn78rN3+センファイルは殲滅しておk
やたらでかいし、バックアップ対象からも外してるよ
インデックス張り直せば勝手に作るし
0259nobodyさん
2010/04/16(金) 10:09:21ID:dbk/orQU時間によって検索結果に出たり出なかったりする時があるみたい
インデックスへの反映具合を確認する方法があればいいんだけど
0260nobodyさん
2010/05/16(日) 02:14:19ID:???オープンソース系検索エンジンの
性能比較をやってるHPありませんか?
0261nobodyさん
2010/05/16(日) 16:24:02ID:???0262nobodyさん
2010/05/31(月) 10:03:05ID:ldCXIDLwselect * 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なのですがどちらも結果は同じです。
0263nobodyさん
2010/06/02(水) 00:02:33ID:pNSVCSiw高根社長の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
タカネ社長ってどうやってばれないように脱税してんだろ?
億単位で脱税して億ション暮らしなんて凄いよな
監査役の奥さんもグルなのか?
0264nobodyさん
2010/06/02(水) 00:03:25ID:pNSVCSiw高根は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
首吊り首絞めプレイ大好き高根英哉
0265nobodyさん
2010/06/02(水) 00:04:26ID:pNSVCSiw>>18
高根英哉blogでレイプ仲間募集中
私とともにマスクの女どもを弄ぶ仲間を募集する
急に思いついたら連絡をして、集まれるような仲間だ
だから、複数名募集するし、いついつという日時があるわけでもない
条件は以下のとおりだ
・SMを実践している、または興味がある
・マスクを用意できる
・都内でイベント参加できる
・イベント内容およびこの仲間を通じて知りえた情報を口外しない
・成人男子である
・携帯電話および携帯メールアドレスを私に公開できる
・酒が好きである
希望者は私宛にメールを送ってほしい
全員が参加できるわけでもないので、こちらの選択に任せてもらう
なるべく想いを書いてもらうほうがわかりやすいし
経験や顔写真も歓迎。
r2007@maskr.com
maskr_2008@yahoo.co.jp
hide@comrade.co.jp
0266262
2010/06/02(水) 08:04:37ID:kP3cOHz1これはどうしようも無いことなのかな?
てっきり出来ると思ってたからがっくし。
0267nobodyさん
2011/05/22(日) 12:38:20.48ID:gdrY9aId0268nobodyさん
2011/06/01(水) 17:59:58.68ID:???100,10 や 1000, 10 と指定しても、0, 10 と同じ結果。
フルテキストインデックス再構築したけど同じ。
インストした頃はちゃんと表示されたはずなんだが…。
■ このスレッドは過去ログ倉庫に格納されています