質問

私は以前から Web 検索エンジンの開発に興味がありました。何から始めるのが良いでしょうか?Lucene について聞いたことはありますが、私は Java に詳しくありません。他に良いリソースやオープンソース プロジェクトはありますか?

大変な仕事であることは理解していますが、それが魅力の一部でもあります。私は次の Google を作成しようとしているわけではありません。ただ、興味がありそうなサイトのサブセットを検索するために使用できるものを作成したいだけです。

役に立ちましたか?

解決

検索エンジンにはいくつかの部分があります。大まかに言えば、絶望的に一般的なやり方で(みなさん、 自由に編集してください より適切な説明やリンクなどを追加できると思われる場合は、次のようにします。

  1. クローラー. 。これは、Web を経由してページを取得し、それらに関する情報を中央データ ストアに保存する部分です。テキスト自体に加えて、アクセスした時刻なども必要になります。クローラーは、特定のドメインにアクセスする頻度を認識したり、robots.txt の規則に従うなどの十分な機能を備えている必要があります。

  2. パーサー. 。これは、クローラーによってフェッチされたデータを読み取り、解析し、必要なメタデータを保存し、ジャンクを捨て、場合によっては次回何をフェッチするかについてクローラーに提案します。

  3. インデクサー. 。パーサーが解析した内容を読み取り、Web ページで見つかった用語への逆索引を作成します。NLP テクニックを適用して、概念のインデックスを作成したり、物事を相互リンクしたり、同義語を追加したりするなど、必要に応じてスマートにすることができます。

  4. ランキングエンジン. 。「apple」に一致する URL が数千ある場合、どの結果が最良であるかをどのように判断すればよいでしょうか?ただ、インデックスではそのような情報は得られません。テキスト、リンク構造、その他調べたい部分を分析し、スコアを作成する必要があります。これは完全にその場で実行される場合もあれば (これは非常に困難です)、事前に計算された「エキスパート」の概念に基づいて実行される場合もあります (PageRank などを参照)。

  5. フロントエンド. 。何かがユーザーのクエリを受信し、中央エンジンにアクセスして応答する必要があります。これは、結果をキャッシュしたり、場合によっては他のソースからの結果を混ぜたりすることについて賢明である必要があります。それには独自の問題があります。

私のアドバイス -- これらのうち最も興味のあるものを選択し、Lucene や Xapian、あるいはその他のオープン ソース プロジェクトをダウンロードし、上記のタスクのいずれかを実行するビットを取り出して置き換えてみてください。うまくいけば、もっと良いものができます:-)。

役に立つかもしれないいくつかのリンク:「アジャイルウェブクローラー」, 、エストニアの論文(英語)スフィンクス検索エンジン, 、インデックス作成および検索 API。大規模な DB 向けに設計されていますが、モジュール式でオープンエンドです。"情報検索, 、マニングらによるIRに関する教科書。インデックスの構築方法、発生するさまざまな問題、クロールなどについての説明が充実しています。オンライン版は(今のところ)無料です!

他のヒント

ザピアン は別のオプションです。Lucene の一部の実装よりも拡張性に優れていると聞いたことがあります。

チェックアウト ナッツ, 、Lucene を作成したのと同じ人によって書かれています (ダグ・カッティング).

最も大きな部分はサイトのインデックス作成であるように私には思われます。インターネットを探索し、そのコンテンツを解析するためのボットを作成します。

友人と私は、Google やその他の検索エンジンが内部的にいかに素晴らしいものであるかについて話していました。0.5 秒以内に何百万もの結果が得られるでしょうか?クレイジー。よく検索される項目の検索結果がプリセットされているのではないかと思います。

編集:これ サイトはかなり面白そうです。

私なら、Wikia のオープンソース検索エンジンなどの既存のプロジェクトから始めます。

[Wikia 検索プロジェクトは終了したと理解しています。しかし、既存のオープンソース プロジェクトに参加することは、この規模の事業に取り組みやすくする良い方法だと思います。]

http://re.search.wikia.com/about/get_involved.html

情報検索の背後にある理論と、検索エンジンの実装の背後にある技術的な詳細について学ぶことに興味がある場合は、この本をお勧めします ギガバイトの管理 イアン ウィッテン、アリスター モファット、ティム C.ベル。(開示:アリステア・モファットは私の大学の指導教官でした。) 今となっては少し古い本ですが (初版は 1994 年、第 2 版は 1999 年に発行されました。今、ギガバイトの管理で何がそんなに難しいのでしょうか?)、基礎となる理論は今でもしっかりしており、素晴らしい入門書です。インデックス作成と、インデックス作成および検索システムにおける圧縮の使用の両方に適用されます。

検索エンジンにも興味があります。Apache Hadoop MapReduce と Apache Lucene の両方をお勧めします。Hadoop Cluster を使用して高速化するのが最善の方法です。

ルセンには港があります。Zend には無料で利用できるものがあります。この簡単なチュートリアルをご覧ください。 http://devzone.zend.com/node/view/id/91

プログラミングにはあまり興味がなく、結果に興味がある場合は、少し異なるアプローチを次に示します。を使用して構築することを検討してください Google カスタム検索エンジン API。

利点:

  • 面倒な作業はすべて Google がやってくれます
  • ユーザーにとって使い慣れた UI と動作
  • 数分で何かを起動して実行できる
  • 豊富なカスタマイズ機能

短所:

  • コードを書いているわけではないので、学習の機会はありません
  • 検索したいものはすべて公開されており、すでに Google インデックスに登録されている必要があります
  • 結果は Google に関連付けられます
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top