tatamilab.jp
mixiでも使われているって言う全文検索エンジンHyperEstraier。mixiの膨大な件数を処理するぐらいだから相当スケーラビリティもあるだろなーとおもいつつ、SQLだけで全文検索できちゃうMySQL+Sennaが便利なんで、そっちばっかり使ってました。 MySQL+Senna(Triton)も、PostgreSQL+Senna(Ludia)も、属性付きで検索した場合、Sennaで全文検索してから、その答えをSQLで絞り込みを行っているようで、たとえば、個人のメッセージを保存しているテーブルを検索した場合など、属性の値が多い場合には、かなり効率が悪くなる事が見えてました。 本当は、メッセージみたいなものは、個人ごとにインデックスをもって処理するべきなんだろうなと思っていて、SennaでやるかHyperEstraierでやるか迷いつつ、ぐぐっていたところ、HyperEstraierがど
今日は奥様とタイ料理&タイ式マッサージの日でした。マッサージはちょっと素晴らしいなあ。 表題のように、全文検索エンジンをGAE上で試作してみました。GAEはGoogle様提供のサービスにもかかわらず「なんで全文検索機能がないねん」という声が上がっていたんですよね。主にtwitter界隈から。 「Introduction to Information Retrieval」という本のドラフトPDFと、たつをさんのところのIIR輪講の資料を参考に作りました。つっても、第1章の一部の知識しか使ってないですが。論理和検索もスキップリストも使ってないし(論理和検索はクエリ式のパーサを書くのが面倒だった)。 import logging import re from urllib import urlencode import wsgiref.handlers from google.appengine
最近、「Introduction to Information Retrieval」というStanfordの大学院向け教科書のドラフトを読んでいます。id:naoyaあたりが勉強会で読んでいる教科書です。この教科書には、効率のいい全文検索システムを作るにはどうすればいいか、という(まさに)教科書的手法が網羅的に書いてあり、そのあたりに興味がある人には、非常に興味深く読めるお勧めの本です。 ただ、面白い面白いと言っているだけでは、エンジニアとしては価値半減ですので、GW中にrubyで一日かけて実装してみました。 さすがに実装は、一日で作ったものですから、非常に素朴です。マルチバイト文字はbi-gramで、シングルバイトはスペースなどの区切り記号で認識しています。インデックスは、rubyの処理系のHashやArrayで保持しており、外部にMarshallで書き出す、というものです。検索エンジン
i-revo お客様サポート 重要なお知らせ i-revoマイポータル終了のお知らせ(2017年3月31日) 日頃よりi-revoマイポータルをご愛顧いただき誠にありがとうございます。 このたび、当サイトは2017年3月31日付けにてサービスを終了いたしました。 併せて「プニマル」、「i-revo 占い」についてもサービスを終了いたしました。 2006年3月のサービス開始以来、 お客様および関係各社の皆様にはさまざまに、ご協力をいただきました。 ここに御礼申し上げます。 i-revoマイポータルのサービス終了につきまして、なにとぞご理解いただきたく存じます。 今後とも「i-revo」をよろしくお願い申し上げます。 全て見る
概要 Hyper Estraierは全文検索システムです。たくさんの文書の中から、特定の語句を含むものを探して、該当するものの一覧を表示することができます。Webサイトを運営している方なら、自分のサイト専用の検索エンジンとして利用することができます。メールボックスやファイルサーバを対象とした検索ツールとして利用することもできます。 Hyper Estraierには、次のような特徴があります。 インデックスを使った高速な検索ができます。 大量の文書のインデックスを短時間で作成できます。 N-gram方式による漏れのない検索ができます。 形態素解析とN-gramのハイブリッド機構で検索精度を向上させます。 フレーズ検索や正規表現検索や属性検索や類似検索をサポートします。 世界各国の言語が扱えます。 対象文書の所在や形式に依存しません。 賢いWebクローラが付属しています。 ライブラリとして各種
Tritonn、Ludia、そしてSennaとは…… 昨今のWeb 2.0と呼ばれるようなWebシステムでは、一般的に大量のコンテンツデータを内部に保有しているのではないでしょうか。大量のコンテンツから目的のコンテンツをユーザが選び取る手段の一つとして全文検索が挙げられます。全文検索とは、検索対象コンテンツの中身すべてに対して検索を行うことを指します。たとえば、タグやタイトルを対象にした検索だけでは、目的のコンテンツを発見できないような場合に有効な検索です。 データベースに保持された大量のデータを簡単に全文検索したい、という場合も多いことでしょう。本稿では、それを実現にする全文検索システムとして、次の2つを取り上げて紹介します。 Tritonn Ludia これらはそれぞれ、Tritonnは「MySQL」、Ludiaは「PostgreSQL」という、Webシステムを開発する上で人気の高
某DBにて、いろいろ試行錯誤しながら、日本語による全文検索を実装することができた。 はたして本当に効果があったのだろうか・・・と調べてみる。 全レコード数:32740 フィールド(フィールドタイプ:TEXT)には、日本語による文章を入れてあり、 全体のうち、4つのレコードのに世界最大のカルデラを持った阿蘇5岳の一つ、山頂のギザギザが特徴的な根子岳です。(省略)という文章が入っている。で、全レコードから「ギザギザ」という文字で検索するとする。この4レコードを探すとする。 LIKEでやる場合、 SELECT * FROM `main` WHERE COMMENT LIKE "%ギザギザ%" レコード表示 0 - 3 (4 合計, Query took 3.1908 sec) と、3秒ちょっとかかった。(実はサーバ自体の性能もあまりよくないんだけれど) EXPLAINすると、ro
自分メモ。 MySQL自体には、Full Textという全文検索機能があることはあるが、日本語には対応してない。 いまんところ、LIKE %hoge%でやったりしてるんだけれど、当然、インデックスが使われないので遅い。 なんとかMySQLにおいて、(簡単に)日本語で全文検索する方法がないか調べてみた。 MySQLについて 伍より MySQLで日本語全文検索を行うためには、まず、形態素解析やN-gramによって、文字列をワードごとに分割して、スペースで区切り、さらに、16進数文字に変換したりして、あたかも日本語ではないかのように装う必要があります。 MySQLでお気楽全文検索 では、chasenを使って、日本語を単語に分割し、DBに登録しているのだけれど、Perlなので読むきがしない・・ 方法として、2つあるようです。 1)chasenなどを使って、日本語を単語に分割して、コード化
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く