検索エンジンに関する世界観です。
オープンソースの全文検索エンジン。中小規模のWWW向け。HTML以外にもOffice、PDF、TeXなどの形式も検索できる。Googleのような検索エンジンを手軽に実現できる。
オープンソースのソースコード検索エンジン。少し古いが、当時の僕はこれを使ってオープンソースプロジェクトのリポジトリのソースコードを良く検索していた。
言わずとしれた大手検索エンジンサービス。
Googleを参照のこと。
以前はYahoo!にもYahoo!検索と呼ばれる独自の検索エンジンがあったが、今ではGoogleの検索エンジンを採用している。
Yahoo!はロボット検索エンジンが生まれる以前からもディレクトリ型の検索エンジンを作っていた。今ではdmozなどがまだそれをやっている(最近はcurlie.orgに引き継がれたとのこと)。
最近流行りのサーチエンジン。利用者のプライバシーを守り、個人情報を収集・追跡しない。検索エンジンはPerlで書かれており、nginxとFreeBSDで動いている。
僕はMozilla FirefoxとDuckDuckGoをWindowsでもAndroidでも使っている。
2019.11.18追記:DuckDuckGoを使うのはやめました。Firefoxが不正停止することがあり、はてなブログの編集機能もおかしくなります。
DuckDuckGoも参照のこと。
Microsoftによるサーチエンジン。
伝え聞いたところによれば、Microsoftによる検索サイトBingの検索エンジンがオープンソースで公開されるらしいとか。既にされているのかもしれない。Googleへの対抗である。
Baiduは中国における検索エンジン。中国ではGoogleを抜いてトップシェアを誇る。
中国には他にもスマートフォン大手のハーウェイやネット通販大手のアリババ・グループなどがあり、米国も無視できない存在になっている。特にGoogleはトランプ政権の意向をくみ取ってハーウェイにAndroidの一部サービスの提供を停止する構えだが、きっとしっぺ返しはアメリカに来るだろう。
Searxはオープンソースのメタ検索エンジン。Websurfxはその代替。
2023.09.03
Internet Archiveは過去のサイトを保存してくれるサービス。閉鎖したサイトでも閲覧することができる。
検索エンジンを作るためには、並列処理を用いて全データベースを一度に一気に検索する必要がある。
たとえば、ひとつの単語を高速に検索するためには、その単語を一瞬で検索するために、全データベースで並列で検索を行う。
難しいのは検索を行う処理ではなく、データベースをどのように常に最新にするか、という「ロボットクルー技術」と、どのような順番で表示するか、という「ランキング処理」である。
GoogleはPageRankというアルゴリズムを用いて、「多くのページにリンクされているページを優先的に表示する」という方式でページを表示している。これは各サイトに含まれる別ホストへのアドレスへのリンクをロボットが収集し分析しながら、各ページをランキングにすることで実現できる。
また、常にロボットがWeb全体をクルーし、最新の内容をデータベースにキャッシュすることで、Web全体の検索を可能としている。
僕は、AIを用いたカテゴリ一覧の自動作成型の検索エンジンを作ると良いと思う。
Googleのような検索エンジンでは、検索ワードを用いなければWebページを知ることができない。検索ワードにヒットしなかった場合や、ランキング外のマイナーなサイトを見つけることができない。
これに対して、昔Yahoo!がやっていたようなディレクトリ型の検索エンジンは、手動で人がディレクトリを作成する必要があり、マイナーなサイトを見つけることができない。
僕は、Googleのようなロボット型のクルーを行いながら、ページの内容をAIが解析して、「このようなジャンルのWebサイト」であることを自動で判断し、インターネット全体を「自動作成したディレクトリ」にまとめて、知られざるマイナーなサイトも含めて、「ネット上の全Webページを一覧にまとめる」ような検索エンジンがあれば良いと思う。
たとえば、Linuxのディレクトリには、AIがLinux関係のサイトだと判断した全てのWebページが一覧で並ぶ。この中からさらにサブカテゴリを分けることで、マイナーなWebサイトも探すことができるようになる。
ただし、WebページのカテゴリをAIが間違って分類する可能性はある。HTMLのメタ属性などに、「このサイトはこのようなジャンルです」といった情報を書けるようにすると良いかもしれない。
DuckDuckGoはGoogleが個人情報を集めたり閲覧者の情報をトラッキングしていることから、「ユーザーの情報を集めない」検索エンジンとして、最近Googleに批判的な人に人気の検索エンジン。
検索エンジンを作る上で必要なのは、データベースの高い並列性と、クロールの正確性と網羅性、ランキングの計算アルゴリズムなどではないかと思う。