投稿

ojizoのWebクローラーは3種に分類しています

Webは常に変わり続けるため、適切な間隔でクローリングを続ける必要があります。 これが難しい。 昔は更新頻度を見て、ページを再訪する間隔を調整できました。 今は動的生成が多いので、ページの主たるコンテンツが変わっていないか判断しないとなりません。 アルゴリズムで主コンテンツを見抜くのは大変です。
ここはojizoらしく、おおよそで調整することにしました。 いろいろなクロール設定を試してきましたが、およそ3種類に分けられることが分かりました。
・大半のページは3階層目まで ・更新頻度が高いページは特製の正規表現で1階層目まで ・良質なコンテンツを多数保有するサイトは深くまで
ojizoのDefault Crawlerは、主ページから3階層目までを巡回するようにしています。 現在は3日で500万ページを巡回するため、2週間以内に全件をクロールできる設計です。 Fessでは「状態」を「有効」にしておきます。
続いて、更新頻度が高いページ。 報道なんかが該当します。 これはサイトごとに正規表現を駆使して、頻度が高い有用なページだけを巡回します。 Fessでは「状態」を「無効」にして、Webクローラーを新しく作成して対応します。
最後に深いクローラー。 これも、コンテンツに関連するページだけを巡回するよう、サイトごとに正規表現を調整します。 これも「状態」を「無効」にして、Default Crawlerと分離して管理します。
サイトの全件をくまなくクロールさせるのは困難です。 ある程度、割り切りをうまくつけてゆきたいと思います。

大公開、ojizoの作り方

ojizo(旧Nyafoo!)はオープンソースのFessを使って構築しています。
ですので、ojizoというかFessベースのWeb検索エンジンは、誰でも作れるといえば作れるサービスです。

ひとつだけ面倒臭いというか、莫迦莫迦しい所がホワイトリストを使っていることでしょう。

隠すほどの事ではないので種明かしすると、ojizoはURL正規表現の塊です。
それ以外は、全部Fessです。
5,000サイト以上を正規表現で記述しています。
ひょっとしたら1万サイトを超えているかもしれません。
僕にも正確な数がわからない状態です。

1万サイトを目視して、URLリストを作り、正規表現で巡回先を記述したのか?
正解。
技術もへったくれもありません。

莫迦だと思った人は正しいです。
そう、ojizoは莫迦莫迦しい作業を積み重ねてできています。

例えば、新聞社がありますよね。
日本に100社ぐらいあるのですが、これをひとつひとつ目視で確認して、正規表現で記述してFessに登録します。

上場企業は2,000社近くありますが、これもひとつひとつ目視します。

都道府県庁、自治体、観光協会、農協、その他。
ひとつひとつ調べ、テキストエディタにURLを保存して、正規表現で巡回先を記述して、Fessに登録します。

登録して、クローラーを巡回させて、うまく行かないところは手直しして。
これを数千回繰り返します。

Yahoo! JAPANですら、人手によるサイト登録はあきらめてしまいました。
祖業であるディレクトリを終了するそうです。

巨人から見たら、ディレクトリを作るのは割に合わないのでしょう。
でも、巨人があきらめたから生まれる市場もあると思うんですよね。
なので、自分が嫌になるまでojizoのリストを作り続けようと思います。

「当たる」検索エンジンを作るには

「当たる」検索エンジンって何でしょうか。

入力されたクエリ(キーワード)に沿ったページが出てくるもの。
これが当たる検索エンジンと言えるでしょう。

当たる検索エンジンを作る基礎が、インデックス数、形態素解析、評点(ランキング)の3つだと思います。

インデックス数は蓄積したWebページの数ですね。
インデックスに無いものは探すことができません。
ちなみに現在、ojizoのインデックスは1,400万件を超えています。
初期の商用検索エンジンぐらいの規模でしょうか。
Googleがダントツで凄かった理由の一つでもあります。
当時の検索エンジンは、Sunのワークステーションとインクトミなどの商用検索システムで構築されていました。
どっちも高価です。
対して、GoogleはGFS(Google File System)という、ホワイトボックス(組み立てパソコン)を大量にLANに接続して、大規模なインデックスを保存する仕組みを持っていました。
PageRankだけでなく、インデックスを安価に蓄積できる仕組みも持っていたんですね。

続いて、形態素解析。
普通に暮らしていたら、まず聞かない単語だと思います。
形態素解析。
これは、日本語のように単語が特定のルールで区切られない言語で必要な分野です。
英語はすべての単語がスペースで区切られるルールになっています。
すべて。100%。これはコンピュータには都合が良いルールです。
対して、日本語は明確な区切り文字がありません。
形態素を使わずに、単純に「京都」に合致する文書を「当たり」と見なすとどうなるでしょう。
「東京都」まで合致してしまいます。
このため、「京都」は京都だけど、「東京都」は京都じゃない、という処理が必要です。
これが形態素解析の概略です。
(実は僕もあまり詳しくないです)

最後に評点。クエリに対して一定のアルゴリズムで評価を加え、適合度順に並べます。
初期の検索エンジンは、単語の出現度合いや単語間の距離などで評価していました。
Google躍進のきっかけになったPageRankも評点のアルゴリズムです。
今のGoogleはPageRankの割合は低いと聞きます。
もっと複雑なアルゴリズムを使っているのでしょう。
ojizoの評価アルゴリズムは、ものすごく原始的で単純です。
ojizoでは、単純なアルゴリズムで満足のゆ…

ojizoイメージイラストを公開しました

イメージ
7月から準備を進めていた、ojizoのイメージイラストが完成しました。支援者限定コンテンツです。

公開サイト(Enty)
https://enty.jp/x8Yel22

「カフェちゃんとブレークタイム」など、多方面で活躍しているポルリン先生に、キャラデザインとイラストをお願いしました。

旧Nyafoo!のイメージを生かしながら、元気で知的な感じに描いてもらえたと思っています。

こんな感じの子です。
「Entyの支援金を集め、クリエイターに適正な報酬を支払って、オリジナルのコンテンツを拡充する」という、僕のもう一つのモデルが動き始めました。
これから、オリジナルのコンテンツを増やしてゆきますので、今後ともよろしくお願いいたします。

インデックスが1,000万件を超えました

イメージ
こんばんは。nyafooです。
本日、ojizoのインデックスが1,000万件を突破しました。目標をひとつ達成です。

7月のはじめの頃は30万件余りでしたから、1か月半で30倍ぐらいのインデックスを集めたことになります。

これまでに、
・業界団体に加盟しているマスコミ
・上場企業
・国、省庁、自治体
・金融機関
・観光協会
・公共交通機関
などを登録してきました。

今はレジャー施設を強化しています。

オリジナルの検索エンジンを作る、と途方もない目標を立てましたが、毎日コツコツとインデックスを延ばしてゆきたいと思います。

これからもojizoをよろしくお願いいたします。

ojizoをchromeに登録する

イメージ
chromeにojizoを登録する方法です。
メニューから「設定」を選びます。
「検索エンジン」→「検索エンジンの管理」を選びます。
「その他の検索エンジン」→「追加」を選びます。
「検索エンジンの編集」で以下のように入力します。 検索エンジン:ojizo キーワード:http://ojizo.jp URL:http://ojizo.jp/search/?q=%s

これで、検索エンジンにojizoを追加できます。

「ホワイトリスト+ブラックリスト」のハイブリッド検索になります

おはようございます、nyafooです。

ojizoの開発を始めて1か月半。ホワイトリスト方式の検索エンジンに挑戦しています。この1か月で、elasticsearchのクラスタ運営など、かなり勉強しました。

すでに、ojizoのインデックスは700万件を超えていますが、やはり広大なネットをまんべんなく網羅するのは大変です。

そこで、従来のojizoエンジンに加え、ブラックリストを加えたGoogleカスタム検索を表示するようにしました。

ojizoで検索して、検索結果が気に入らないときは「▼Google検索結果を表示」をクリックしてください。ブラックリストを加えたカスタム検索が表示されます。

検索結果が無かった場合は、Googleベースの結果が表示されます。

1か月やってみて、「ojizoでヒットしなかったら、すぐGoogleに行ける」方が現実的と判断しました。

でも、ojizoのオリジナル検索も強化し続けますよ。まだまだ頑張ります。
これからもojizoをよろしくお願いいたします。