ものがたり(旧)

atsushieno.hatenablog.com に続く

RAST in piece (メガンテ)

さりげなくLinux Conferenceに遊びに行ってみました。と言っても聞いてきたのはRASTとRuby stdioの2セッションだけだけど…普段Rubyいじっているわけではない上に、ものの1時間20分で消失(w 本当はもうちょっと聞いていたかったんだけど、仕事出来なくなっちゃうのでまあほどほどにしてきました。

RASTは、実は今日初めてどーいうものか知ったんだったりして。本当は明日やるらしい全文検索BOFとゆーところに参加するといいんでしょうけど、明日は行くつもりがないので、ここにだらだらっと書いてみます。と言っても僕はNgramとか本当にindex engineっぽい話は全然分からないのでその辺は割愛。(この時点でこのエントリはかなり無意味w)

RASTのアドバンテージは、やっぱしエンコーディングネイティブな検索でしょうか。いったんUnicodeなどに変換するとCHTMLなページで絵文字検索なんかが出来なくなってしまうわけです。
で、C#のフロントエンドがあるらしいんだけど、見あたらないので、APIがどうなっているのか分かりません。が…C#とかJavaみたいに、文字列の内部データがUTF-16ベースになっていると、結局Stringを検索対象として指定した時に、ネイティブだった文字列はUnicode文字列になってまうのではないかなあ。System.Encodingみたいにbyte[]を入力として受け付けるAPIになっていれば理屈としてはOKですが(でも面倒そう)。

# そう言う意味では.NET(のSystem.Web)のCHTMLサポートなんて実はすげー意味がないのかも

あとutf-8があってutf-16が無いのはパフォーマンス的な問題かもしれないけど、例のMichael Kaplanがこの辺で興味深いエントリを残していて、参考になるんじゃないかなあと思う。特に日本語処理を意識した場合、utf-8の文字サイズはutf-16のそれより大きい(日本語のコードポイントはだいたいU+3040以上にある)っていうのは本当っぽい気がする。あ、でもutf-8がネイティブの環境も多いので微妙なのかなあ。

検索語の切り出しと文字列比較とエンコーディングまわりがまだ混ざってて云々というのはあの短い時間でも何度か繰り返されていたので、あえて僕が書くことは何もないでしょう…。

ところで↓のGoogle Codeには、MonodocにdotLuceneみたいなインデックスエンジンを付ける、っていうアイディアも上がっているんですが、C#が使えるならRASTもアリかもしれませんね。と煽ってみたりして(w

ていうかそもそもRuby.NETとかゆーのも書いてあるんですが(笑

あ、で書き忘れたけどstdio considered harmfulの話もけっこう面白かったです。専門外なんだけど分かりやすい内容でした。そーいやConsole I/Oは.NET 2.0でも何かいろいろ手が加えられてましたねえ。Gonzaloがその辺いろいろいじってたんですが、中まではヲチしていなかったので僕には分かりません…。今日の話題は、Dickが劇的に改善したdaemonless I/Oとは、あんまし関係し無さそうだった、かな、たぶん。もともとMonoはWindowsのI/Oをエミュレーションさせられる立場ですからねぇ。あんましRubyとはかぶらない気がします。