YaCy

YaCy（ヤシー、ヤスィー）とは、「人民による人民のためのウェブ検索」を標語する、オープンソースの分散型検索エンジンである。GPLv2でライセンスされている。YaCyのコアはJavaによって記述されており、ネットワークはピア・ツー・ピア （P2P）で構築されている。

**概要**
他の分散型検索エンジンと同じようにインデックス(索引情報)は、P2Pネットワーク上の多くのコンピュータに分散される。各YaCyピアがそれぞれ独立してクロールを行い、見つかったWebページは分析、索引付け(インデキシング)され、分散ハッシュテーブル(DHT)でP2Pネットワークを介して他のYaCyピアと共有される。また、YaCyネットワークには中央サーバーは存在せず全てピアだけで構成されており(いわゆるピュアP2P)、全てのピアは対等に扱われている。
YaCyでは独自の検索用ページが提供されており、他の一般的な検索エンジンと同様の形式で検索を行うことができる。
全文検索エンジンにはApache Solrを採用している。また、一部日本語化されているが不完全である。

**システムコンポーネント**
YaCyは以下の4つの要素から構成されている。
クローラ:ウェブページのリンクを辿って、その内容を分析する機構。
インデクサ:各単語を、単語ハッシュの形で逆引き単語索引(Reverse Word Index,RWI)に格納する。また、各単語は関連URLやランキング情報のリストを持っている。
ユーザーインタフェース:ローカル環境で提供される、検索および管理用のウェブインターフェース。
データストレージ:RWI、分散ハッシュテーブルを格納するために使用されるデータベース。

**検索技術**
YaCyはクローラでWebページを収集し、それを解析、索引付けし、インデックスを作成してローカルに保存する。ピアがYaCyネットワークに参加している場合、ローカルインデックスもそのネットワークの共有インデックスにマージされる。
YaCyネットワークに参加している場合は、検索を行う際にはローカルインデックス以外に、YaCyネットワーク上のグローバルインデックスからもインデックス情報を取得し、検索結果に反映する様になっている。
また、内部の全文検索エンジンにはApache Solrを採用しており、Solrクエリ形式で検索クエリを記述したり、Solr Boostクエリでランキングを調整したりすることができる。

**他のサービスとの連携**
YaCyには外部サービスと連携するための機能が備えられており、KnowledgeLoader内のGeoNameを利用した、OpenStreetMapとの連携なども可能である。ほかにも他のサービスのOpenSearch形式のデータを読み込み、検索結果に反映させることもできる。

**YaCyネットワーク**
デフォルトの公開YaCyネットワークは"freeworld"であるが、独自のYaCyネットワークを設定し参加することもでき、それによって独自の検索サイトを作ることも可能である。
YaCyネットワークに参加せず、ローカルネットワーク(ファイルシステムやイントラネットなど)のインデキシングを行ったり、ほかのピアから独立したなど動作も可能である。
また、YaCyネットワーク上において各ピアは、(お互いに)直接アクセスできるピアはSeniorピア、できない物はJuniorピア、アクセスでき、シードリストと呼ばれるピアのリストを公開しているものをPrincipalピアと呼ばれている。通常、データベース内のドキュメントの量を増やすにはクローリングを行う必要があるが、Senior/Principalピアの場合のみ、自動的にDHTを送受信して自己のドキュメントの量を増やすことができる。ただし、JuniorピアでもRWIやドキュメントをほかのピア(ただしSenior/Principalピアのみ)に送信することはできる。

**ユーザインターフェース**
YaCyのユーザインターフェースはデフォルトではBootstrapを使用したものを利用できるが、これは自分でカスタマイズすることもできる。
また、検索結果はOpenSearch形式やJSON形式などで利用することもできる。

**YaCyの利点**
YaCyの最大の利点は、その透明性である。企業の主要な検索エンジンはクローズドシステムであり、その検索技術は非公開であることが多く、利用者が知ることはほぼ不可能であるが、YaCyはオープンソースである上、各利用者がそれぞれの評価基準で検索結果を評価できるため、誰でも透明性のある検索を行うことができる。
そのほかにも以下のような利点がある。

**プライバシーの保護**
YaCyでの検索は、自己ピア内のみで処理する場合(プライバシーモード/ステルスモード)は検索クエリの監視はほぼ不可能である。ただしYaCyネットワークを利用して検索する場合、ハッシュ形式ではあるが検索語がネットワーク上に流れるため、検索語を一切知られたくない場合はプライバシーモード(ステルスモード)で検索する必要がある。また、プライバシーモード(ステルスモード)を利用する際は、デフォルトのユーザインターフェースであれば初期画面や検索結果から変更することができる。

**検閲回避**
GoogleやBingなどに代表される商用検索エンジンでは、検索結果の評価に少なからず企業の意図が関わるが、YaCyでは最終的に評価を行うのは利用者であるため、意図的にページのランキングを下げて結果に表示させないなどの検閲を避けることができる。これにより、結果的にフィルターバブルを回避することが可能である。
また、ブラックリスト機能など検索結果から特定のページを除く手段も用意されており、「自分だけの検索エンジン」を作ることも可能である。

**イントラネット用の検索エンジン**
YaCyはその設計のために、イントラネット用の検索エンジンとして使用することができる。また、深層Web(Tor、Freenet、I2Pなど)等のインデックスに使用することもできる。

**特殊な形式のファイルの検索**
YaCyにはMicrosoft OfficeのWordやExcel、PowerPointなどの形式のファイルやMP3などの音楽ファイル、torrent、gzip、apk(Android Application)、pdfなど、さまざまな種類のファイル検索することができる。
また、検索には利用者のコンピュータのみが必要であるため、集中的なウェブ検索のための莫大な電力の消費（場合によっては発電所を備えたデータセンターの運用）を廃止することができる。

**問題点**
YaCyにはその性質上、P2Pの持つ問題(NAT越え問題など)等、さまざまな課題もある。YaCyには中央サーバーが存在せず、YaCyネットワークは誰にでも公開されており、全てのピアは対等に扱われているため、悪意のあるピアは（理論的に）不正確または商業、思想的に偏った検索結果を挿入することが可能である。ただし、これはブラックリストなどの機能によってある程度防ぐことができる。
サイトのランキングはYaCyのクライアント側で行われるため、主要な検索エンジンより動作が遅くなる場合がある。
また、ランキングアルゴリズムが、主要な検索エンジンよりも劣る場合がある。しかし、他のOpenSearchに対応したシステムから検索結果を読み込むことで多少改善できる。

**脚注**

**関連項目**
 Dooble - 統合されたYaCy検索エンジンツールウィジェットを備えたオープンソースのWebブラウザ- FAROO - YaCyと同じ分散型検索エンジンの一つ- MetaGer - ドイツのメタ検索エンジン。YaCyの検索結果も使用している。

**外部リンク**
 yacy_search-  YaCy 'demo1': Search Page - YaCyの公式デモサイト(英語)。実際に検索することができる。- yacy