[管理人さんのサイト開発・運用報告+αの書]

検索エンジンの作り方 > 日本語を対象の検索エンジンに最適な内部文字コードとは(UTF8 or EUC-JP or ?)


[携帯版(QRコード)] 総閲覧回数:2,267,171回 / 日記拍手:726

作品DB等各サービスの機能追加情報や、技術系・面白系記事を中心に提供。
記事の投稿は基本Twitterでも告知させて頂いています。
連絡は作品DBの論客の方なら私書、DB外ユーザの方ならメールTwitterで可能です。
アクセス記録[推移 / PV内訳(過去1日 / 過去1週間) / 外部アクセス元 (昨日 / 過去1週間) / ログイン論客足跡]
プロフィール私書(メール)
   /   /送済
評価(一覧   /)
投票   /共:   /
ファン登録
作品/情報/
DB構築()
書き物
[書く]
攻略記事リンク集
My Play List
RSS購読
RSS
日記表示スタイル
リスト/携帯(QRコード)
画像/動画/音声/リンク
表示開始年月
日記内検索

分類
日記の主な内容
サイト運営/開発
検索エンジン情報
・技術ネタ(Berkeley DB,
Linux, Perl, サイト作成)等

サイト管理
全まとめ
サーバー管理
定期処理状況
開発予定
削除提案
作品追加依頼
OP/ED追加依頼
OP/ED not found
作品提案承認欄

格言 fromスクライド
この世の理は即ち速さ
20年かければ馬鹿でも
傑作小説を書ける

助けられたら助け返す
それが俺のルール

強くなるには
一番弱い考えをする事だ
そしてその考えに反逆する



近頃介護DBとかの為に
介護関連の勉強中
<=新記事2008/09/14 インストール::コマンドでのインストール
=>古記事2008/09/13 皆声.jp::リリース予定

1. 2008/09/14 検索エンジンレポート > 検索エンジンの作り方 > 日本語を対象の検索エンジンに最適な内部文字コードとは(UTF8 or EUC-JP or ?)」
[この書込みのみ表示(記事URL紹介用) / 編集 / 削除 / トラバ送信 / 共有分類に追加(タグ付け)]

日本語を対象にした検索エンジンは内部の文字コードを何で保持するのが良いのだろうか。
内部の文字コードとはデータを何の文字コードで保持するかという意味である。
外部に検索結果として表示する時には、クライアントの環境に合わせて表示される。

一つの候補には各国の言語も同じ文字コードで表示できるUTF8がある。
UTF-8の文字コードレンジは
[\x00-\x7F]
[\xC0-\xDF][\x80-\xBF]
[\xE0-\xEF][\x80-\xBF][\x80-\xBF]
[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF]
[\xF8-\xFB][\x80-\xBF][\x80-\xBF][\x80-\xBF][\x80-\xBF]
[\xFC-\xFD][\x80-\xBF][\x80-\xBF][\x80-\xBF][\x80-\xBF][\x80-\xBF]
一般的にUTF8では日本語の表現には1文字について3bytes消費する。
また最大6bytesまでが割り当てが可能な分、日本語に限らず韓国語、中国語なども同じくUTF8という文字コードセットで表現できる。
これはグローバルで動作する検索エンジンにとっては都合が良い。
何故なら同じ文字コードで色々な言語の処理が行えるので、実装がとてもしやすい。
その為、ソフトの国際化といえば、まずUTF8化が行われる。

あと、日本語固有の文字コードとしては、Shift_JIS(携帯などで使われる)、EUC-JP(プログラムでよく使われる)、JIS(メールで使われる)がある。
このうち、日本語固有の文字コードでプログラミングに適したEUC-JPの文字コードレンジは
[\x00-\x7F] # ASCII
\x8E[\xA1-\xDF] # 半角カタカナ
[\xA1\xB0-\xCE\xD0-\xF3][\xA1-\xFE] # 1,16-46,48-83区
\xA2[\xA1-\xAE\xBA-\xC1\xCA-\xD0\xDC-\xEA\xF2-\xF9\xFE] # 2区
\xA3[\xB0-\xB9\xC1-\xDA\xE1-\xFA] # 3区
\xA4[\xA1-\xF3] # 4区
\xA5[\xA1-\xF6] # 5区
\xA6[\xA1-\xB8\xC1-\xD8] # 6区
\xA7[\xA1-\xC1\xD1-\xF1] # 7区
\xA8[\xA1-\xC0] # 8区
[\xA9-\xAF\xF5-\xFE][\xA1-\xFE] # 9-15,85-94区
\xCF[\xA1-\xD3] # 47区
\xF4[\xA1-\xA6] # 84区
一般的に日本語の表現には1文字について2bytes消費する。
日本語の表現しか出来ないが、UTF8に比べて2/3の量で同じことを表現できる。
極端な例では、ネットワークを通じてホームページを表示する時にはUTF8に比べて2/3の時間で済み、またディスク消費量や読み込み等の処理時間も2/3になる。
正確に言うと、UTF8でしか表現できない日本語もあり、その点で劣るが、その領域は限られるし、携帯電話がShift_JISでしか表現できないように、いずれにせよ表示する時にはUTF8=>Shift_JIS, EUC-JPといった文字コード変換する時には該当文字無しとして消さなければいけない文字なので、日本語だけを考えるとUTF8のメリットはデメリットに比べてそんなに大きくない。
また、Shift_JIS<=>UTF-8<=>JISは文字コード変換を計算で行えるが、UTF8はそうした対応関係が無いので、文字コード変換をする時の「コスト」が高い。

よって、
・速度(CPU/IO消費量削減)
・日本語各種文字コードへの変換コスト削減
・必要ディスク量/サーバーの削減
の為にはEUC-JPの方がUTF-8よりも良い。
勿論、Yahoo, Google, MSN, Askといったグローバルの検索エンジンならそうしたローカルの文字コードを採用する理由は無いわけだが、単純に速度と処理能力の極限化を重んじて日本語対象専用の検索エンジンを作るのなら、EUC-JPを採用するメリットは大きいと言えるでしょう。

作品データベースとminakoe.jpの検索エンジン(うーん、何と名づけよう? これについては後でよく考えよう...)は、そうした理由で内部の文字コードはEUC-JPで保持しています。
韓国語や中国語に対応するということが来たら内部の文字コードも処理もUTF8化するということになるでしょうが、その予定は近い将来見えるところには無いので、日本語対象の検索エンジンとしての最適化を優先しています。

※ ちなみに最近の記事はminakoe.jpの開発に作業が集中しているのに合わせて検索エンジンネタばかりですが、minakoe.jpのリリースが終わったら作品DBの方に開発リソースを戻せる予定です。
※ あとhttp://minakoe.jp/の機能は検索と大量データ解析というベーシックな機能なので、現在の作品DBの検索システムにその機能とサーバー群を流用しているように、作品DBの方にも回りめぐって有用な機能を流用できると思います。
※ 寝る間もなく作成作業をしていても、本日のギアスは「また見てギアス」がかかっているので見ます。そろそろエンデインング。
※ あ、長老御推奨のウォーキングバタフライはギアスかかっていないので今週飛ばしで来週見ます。

コメントする
Check

[他の記事も読む]
<=新記事2008/09/14 インストール::コマンドでのインストール
=>古記事2008/09/13 皆声.jp::リリース予定

大分類が「検索エンジンレポート」の記事
この論客の記事全て



作品DB等各サービスの機能追加情報や、技術系・面白系記事を中心に提供。
記事の投稿は基本Twitterでも告知させて頂いています。
連絡は作品DBの論客の方なら私書、DB外ユーザの方ならメールTwitterで可能です。