WinMX for linux な lopster その2
415 :
login:Penguin:
>>410 OpenNapのファイル名検索は、
●ユーザーログイン時
・ユーザーからファイル名のリストを受信
・ファイル名をスペース区切りのトークンに分割
・トークンごとにハッシュ値を計算
●検索時
・検索文字列からハッシュ値を計算
・前述のファイルから、ハッシュ値が一致するものをサーチ
だと思う。ソースをざっと見ただけなので、間違ってたらスマソ。
あと、SlavaNapとかなぷぅとかの実装は知らん。
416 :
410:02/11/03 17:41 ID:CxLzW8r7
>>415 それだと大改造になりますね・・・
ONT2chっていう鯖で聞いてみたんですけどOpenNap-NG使ってるそうです。
>>411 納得。それって、lconv対応前は、1024程度だったんだよ。知ってる?
なので、lconv が元も先も大きくしたみたい。
そもそも、受信した内容そのものをEUC化しちゃうから、先も元も同じ
が適当なのだと思うよ。というか意識してないんだと思うよ。
>417
lconv_conv()の前後をざっと読んでみたけど,どこもlconv_bufの
ほぼ半分のサイズで処理しているから,lconv_bufが溢れる心配は
余計なお世話だったかも.
変換後に長くなる原因って,EUCの2バイト半角カナだけ?
>>416 ONT使ってるんでやってみようと思ったけどヘタレな漏れでは無理だった。
というかスレ違いか。
420 :
415:02/11/05 18:19 ID:QgNveoYk
>>416 >>419 記号をトークン区切りとみなすようにすればいいかも
Napster全般スレでもつくるか? 需要あるかどうか知らんけど
昔、漢字とそれ以外の(かな・カナ・他)の間を
トークンとして認識するようなパッチつくったけど、
一人鯖だったから効果はわからなかった。笑い
>>415 > ・トークンごとにハッシュ値を計算
ん?
どこでハッシュしてんの?
add_file.c
43:sInsertFile (HASH * table, char *key, DATUM * d, TokenRef * ref)
71:if (hash_add (table, files->key, files))
ここではなかろうか。
>>423 ( ゚Å゚)ホゥ
。。。で、ハッシュって計算が必要なのか?
>424
おいおい、ひょっとして、ハッシュの意味がわかってないのか?
というか、ソース嫁よ。
hash.c:62のhash_stringがそうだから。
427 :
login:Penguin:02/11/06 07:21 ID:Q4v2Olld
>>421のやり方でヨサゲだなぁ。
つーか、今は無き^H^Hエロ、napster.comでも同じように、
数字とか記号を切り目にしてた様な。
>>421よ、晒してくれると嬉しいぞ。
428 :
419:02/11/06 15:50 ID:dFq4pw6V
あ トークンの区切りを変えるのか。
文字列照合するようにしようとしてた・・・
429 :
login:Penguin:02/11/06 20:46 ID:3IR41Qnj
cvsのソースコードが9/10からメッセージファイル以外変わっていないのですが、作者が休暇に逝ってしまったせいでしょうか?
リソースのリークが酷くて、二日回すとCPUをほとんど喰い尽くすのですが。pthreadは津買物にならないし。
トークン区切りまくるとメモリ食わない?
小規模なら問題ないだろうけど。
そういえば前にどこかの鯖が検索にBM法使うようにしてたけど
今はどうなってるんだろうかな・・・
431 :
415:02/11/07 01:08 ID:QuHv7JqH
OpenNap-ng0.45b7
search.c
#define WORD_CHAR(c) \
(isalnum((unsigned char)(c))||(c)=='\''||(unsigned char)(c) > 128)
トークン区切りとみなさない文字の指定。
Shift-JISの全角カッコ各種をトークン区切りとみなすといいかも。
あと全角スペース。