検索インデックスの1文字化にチャレンジ!

検索インデックス改良計画を発動中~。(゚Д゚)b
っていうか、せざるを得ない状況に追い込まれているだけなんですけどね。
DBがパンク寸前になっちゃった!やばいですーーーー!!! [2008/06/12]



Nグラム方式を利用したインデックスだと、容量のバカ食いということになるため、何とか減らしたい。
しかし辞書なんて準備できないし、検索エンジンによく用いられる形態素解析なんて無理!!
武之介はヘボプログラマーですから・・・。(つД`)

そういうわけで、検索インデックスのDB中身を眺めながら、少ない脳みそで必死に考えました。




「何か良い方法はねえがぁ~」



で、昨夜思いついた1つの方法をご披露いたします。

(技術的な話がたっぷりになっちゃってます・・・(--; )


現状、検索インデックスは、文字列を順番どおりに小分けして作成しています。
----------
1 本
2 日
3 は
4 晴
5 天
6 な
7 り
8 本日
....
----------

「晴天」という文字列を検索したい場合は、今までは
「晴天という文字と一致するデータはあるか?」
という事で検索させていたわけです。
つまり検索すると8番がHITする。
ゆえに検索にHITしたよ!という判断ができることになります。



ここでちょっと考えてみた。
まず検索インデックスを「1文字のみ」にしてみる。
----------
1 本
2 日
3 は
4 晴
5 天
6 な
7 り
----------
こうすることで、インデックスの容量をかなり削減できるという第一目標は達成。
しかし、こうなってしまうと「晴天」という文字で検索した場合は一致しないということになってしまいます。
けれども検索キーワードを1文字ずつに分解して
・「晴」という文字と一致するデータはあるか?
・「天」という文字と一致するデータはあるか?
という形にすれば、4番、5番がHITする。
ただこの状態では、あくまで「晴」「天」という一文字ずつの語句のHITをチェックしただけで、本当にチェックしたい「晴天」という文字列としてのチェックになりません。



(゚Д゚)....


ここに
・「晴」「天」が連番になっているか?
という条件を追加。
すると
4 晴
5 天
がつながった文字であるという認識ができ、「晴天」という文字がHITしたということになるんじゃねーーーーーーっ??Σ(゚Д゚)




もちろんこれだけじゃあ上手くいきませんので、これにちょこっとスパイスを追加。
そして、試験的に自宅PC上で実行!!!


<従来の8文字検索インデックス:WEB上>
浮世絵:12件
浮世絵 江戸:12件

<新しい1文字検索インデックス:自宅PC>
浮世絵:12件
浮世絵 江戸:12件



キタ━━(゚∀゚)━━ヨ

検索結果が一致したーーー!!!!



検索ロジックをかなり無理やり作ったのでまだまだ荒いところがありますが、とりあえず希望通りの検索を実現することができました!
検索速度は落ちるけど、ロジックの部分をもう少しシンプルにまとめることができれば・・・それなりの高速化を実現できるはず!!!
インデックス70万件を減らすというのが大前提だったので、これで何とか上手くいきそうです。



とはいえ、あいかわらず、文字の重要度・ランク付けといった機能は高機能すぎてできませんけどね。
まぁあくまで個人サイトの検索システムだし、そこまでやる必要はないかなぁ~と。
ただ単純な知的好奇心の1つとして、チャレンジしてみたい機能でもあります。
余裕があったらやってみようかなぁ~。


もうちょっとで上手くいきそうな気がするので、今宵もコードに云々うなってみます。(--;



スポンサーサイト

Comment

コメントの投稿


管理者にだけ表示を許可する

Trackback

http://takenosuke.blog32.fc2.com/tb.php/821-f0527d67

«  | HOME |  »

プロフィール

武之介(たけのすけ)

Author:武之介(たけのすけ)
悪ノリ大好き!でも小心者ナンデス。
そんな武之介の内なる声を余すところなく書き殴ったブログ!
表の仮面(笑)でもある、「上原半兵衛道場」もヨロシク!!
メールはこちら


follow takenosukenagao at http://twitter.com


カテゴリー


最近の記事


最近のコメント


最近のトラックバック


月別アーカイブ


ブロとも申請フォーム

この人とブロともになる


ブログ内検索


RSSフィード


リンク

このブログをリンクに追加する