5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

全文検索エンジンを作りたい、作っている人のスレ

1 :デフォルトの名無しさん:2010/03/27(土) 02:29:11
全文検索エンジンを作りたい、作っている人のスレ

いまつくってる



2 :デフォルトの名無しさん:2010/03/27(土) 02:35:27
2chで使えるの作ってくれ
findは有料だし

3 :デフォルトの名無しさん:2010/03/27(土) 02:42:25
まかせろ
リアルタイムでindexして全文検索出来るやつってこと?

4 :デフォルトの名無しさん:2010/03/27(土) 02:43:19
グーグルでおk

5 :デフォルトの名無しさん:2010/03/27(土) 02:48:46
定期スレ乙

6 :デフォルトの名無しさん:2010/03/27(土) 04:31:12
あ、俺も作ってる

7 :デフォルトの名無しさん:2010/03/27(土) 05:39:05
じゃあ俺も

8 :デフォルトの名無しさん:2010/03/27(土) 06:27:30
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

9 :デフォルトの名無しさん:2010/03/27(土) 10:31:03
リアルタイムで追加可能でHDDのアクセスが少ない転置インデックスの構造ってどんなの?
下のスレが唯一参考になるんだが。
Googleデスクトップとかはどうやってるんだろ?

第20回 転置インデックスの実装(その2)
ttp://gihyo.jp/dev/serial/01/make-findspot/0020

10 :デフォルトの名無しさん:2010/03/27(土) 13:13:49
>>6
ブロックを拡張する方法は、やっぱり遅かった。一般のHDDではシークが
ネックになるので、極力シークしないで作るようにしたよ。
つまり、これまで作った巨大な転置インデックスはそのまま利用し、十分
小さい転置インデックスだけを書き換えるようにしていた。検索時は巨大な
インデックスと小さいインデックスの両方を検索してマージ。小さいインデックス
が大きくなってきたら、バックグラウンドで巨大インデックスとマージ(これは時間
掛かるので週1処理とか)。マージが終われば、小さいインデックスを空にする。

こんな実装してますた


11 :10:2010/03/27(土) 13:16:02
あ、上のは>>6じゃなくて、>>9へのポイントね

12 :デフォルトの名無しさん:2010/03/27(土) 19:29:32
>>10
すげー参考になります!さんくす!
今考えてるのは単語の出現確率であらかじめ予定サイズを割り振っておいて
最初に全体で800MBとか巨大に取ってしまって、そこに割り振る、という感じです。
(Google Desktopがそんな感じ?ぽいので)

13 :デフォルトの名無しさん:2010/03/27(土) 19:36:05
indexを一個にまとめなければ良いんでは。
200個くらいに分割すれば、一個5Mでも1ギガ扱える。
更新は5M程度済む。

14 :デフォルトの名無しさん:2010/03/27(土) 19:38:48
単語の出現位置は、差分だけ記録すれば一データを平均1バイト程度
であらわせる。
1Mあれば、100万個の位置を記録できる。

15 :10:2010/03/27(土) 20:05:59
>>13
それも考えたんだけど、結局小さいインデックスを多数用意するという事は、
シークがそれだけ増えるのであんまりパフォーマンスでなかった。
でも、RDBMSのようにテーブルスペースを定義し、複数のストレージに
同時アクセスできれば状況が違うかも知れない。少し考え方が違うけど、
H.E. のバックエンドであるqdbmは、そういう事ができる

>>14
H.E. .なんかだと、そもそも位置情報はいらないんじゃないかという大胆な
発想だけど、>>9でもポイントされているFINDSPOTでは位置情報をあいまい
検索なんかに利用していて、バッサリ切るにはもったいない。
位置情報に限らず、転置インデックスにはデルタが必ず正の数になる数列が
色々出てくるわけで、この性質に特化した専用圧縮は、確かに効果が高い。

今、圧縮sufix arrayのイイトコドリして転置インデックスを圧縮できないか奮闘中
一応言っとくけど、自分はH.E.の中の人でも FINDSPOTの中の人でもない、ただの人です。

16 :デフォルトの名無しさん:2010/03/27(土) 20:17:30
1000Mのランダムアクセスと、複数ファイルへのアクセスは変わらないだろ。
シークじゃなくてファイルのopenなどが時間くう。
100個-200個程度なら開きっぱなしでいけるはず。

17 :デフォルトの名無しさん:2010/03/27(土) 20:26:09
>>16
うん。だからランダムアクセスはなるべく使わないようにやってみたよ。
つまり"foo"のインデックスは、1ファイルの一箇所に常にまとめる。

分散すると"foo"のインデックスを複数ファイルから検索する事になる
ので遅くなってしまうのが分散のデメリットだと思った。
だけどこれだと書き込みが出来ない(やりにくい)ので、苦肉の策で
間を取ったのが、>>10で書いた大きいのと小さいのとの2つに分散する方法

18 :デフォルトの名無しさん:2010/03/27(土) 20:29:11
それならfoo foe foi ・・・とhoge hage hoe・・・ などで
一ファイルずつ分けたって同じだろう。

19 :デフォルトの名無しさん:2010/03/27(土) 20:33:28
>>18
open()の負荷は別問題として、それならいいんじゃないの?
問題としてたのは、"foo"を数箇所から取得するという事だから。
あくまで、うちで作った実装での話しだけどね。

20 :デフォルトの名無しさん:2010/03/27(土) 20:40:10
追加更新での大移動を避けられるっていうこと。
一ファイルだと一部の追加だけでまるまるコピーしないといけない。

21 :デフォルトの名無しさん:2010/03/27(土) 20:52:45
>>20
大移動を避けるかどうかという視点だと、ファイルシステムレベルなら確かに
1-gram 1ファイルはアリのように見える。
でも、それはあくまでファイルシステムから見た場合の話しであって、ファイルが
細切れになっていると、せっかく同一ファイルの同一位置に情報を集約しても物理
的な配置がばらばらになって検索パフォーマンスは悪くなったんだよ。


22 :デフォルトの名無しさん:2010/03/27(土) 21:03:47
>>21
どちらにしたって断片化は防げないし
断片化しないように書き込むには毎回
領域確保して書き込まないとね

23 :デフォルトの名無しさん:2010/03/27(土) 21:08:11
>>22
だね
その辺は実はまだ追求が甘いんだけど、テキトーに確保したりそんな感じ
いずれにせよ、うちの実装だと大移動があるのは事実なので、そこは確かに
弱点なんだなー

24 :デフォルトの名無しさん:2010/03/28(日) 05:27:24
よほど断片化して無ければ速度差なんて無いだろ。
アルゴリズムでブロック単位で読みことが確定していれば別だが。

25 :デフォルトの名無しさん:2010/03/28(日) 05:29:16
てか、インデックスを全部メモリーに載せるのがいちばん

26 :デフォルトの名無しさん:2010/03/28(日) 05:32:17
専用マシーンならそれもアリだが。
デスクトップで使ってほかにもソフト動くなら占有できないが

27 :デフォルトの名無しさん:2010/03/28(日) 05:39:42
断片化、かなり重要だと思う。
俺のソフトでは何も考えずに後ろにぽんぽん追加してたら(転置インデックス部分じゃないけど)
10000とかに断片化していて直近のデータサーチするのが死ぬほど重くなった。
100MB単位とかで確保してしまった方がいいような希ガス。

28 :デフォルトの名無しさん:2010/03/28(日) 06:16:25
最近はしょちゅう再インストールしてるから
あまり断片化のことは気にしなくなったな…
扱うデータがそれほど大きくないので外に
出して管理したほうが楽だった…

29 :HDDは安価になり申したがメモリはそれなり:2010/03/28(日) 06:34:50
ソフトの起動と設定。インストーラの実行手順。
環境復旧までかかる手数を最小限に押さえ込む

いま必要な道具だけzip風な形式で固めておいて
展開して復旧。あとはいらないpluginの見直し(これでだいぶ軽くなる
この辺か…クライアントサイドで気をつけてることは…。

30 :デフォルトの名無しさん:2010/03/28(日) 07:24:20
結構作ってる人居るんだな。みんな商用?
うちは商用だけど、転置インデックスそのものは自分の私物。
いつか公開したいと思ってたりするんだけど、特色ないとつまらないよな。

31 :デフォルトの名無しさん:2010/03/28(日) 09:58:07
個人用のデスクトップ検索エンジン、それとも小規模のサーバー型?
どっちなの?

32 :デフォルトの名無しさん:2010/03/28(日) 18:56:12
>個人用のデスクトップ検索エンジン、それとも小規模のサーバー型?
ん、つまりRDBMSで例えるなら自分で開発したMySQLみたいな物を
持っていて、仕事ではそれを利用してアプライアンス作ったり、WEB
サイトのバックエンドに利用したりしてるってイメージ。
だからデスクトップ用とかサーバー用とかいう以前に、ただの部分でしかないね。

33 :デフォルトの名無しさん:2010/03/30(火) 21:14:32
おい、>>1はどうしたんだよ?

34 :デフォルトの名無しさん:2010/03/30(火) 21:20:56
っしゃああああああああああ!おれもつくるどーー!!

35 :デフォルトの名無しさん:2010/05/31(月) 12:03:36
あげ

36 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 11:13:24
ag

9 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)