0

約100万のWebページを検索するための小さなWeb検索エンジンを構築していますが、転置インデックスを構築するための最良の方法は何ですか?DBMSを使用するか、何を…?ストレージコスト、パフォーマンス、インデックス作成の速度、クエリなど、さまざまな観点から?自分で作成したいので、オープンソースプロジェクトは使いたくありません。

4

4 に答える 4

3

現在のクローズドソースデータベースマネージャーのほとんどは、ある種のフルテキストインデックス機能を備えています。その人気を考えると、ほとんどの場合、HTML用に事前に作成されたフィルターがあると思います。そのため、のようなものを検索しても<p>、すべてのWebページで1000ヒットが得られるわけではありません。

完全に自分で仕事をしたいのであれば、HTMLのフィルタリングはおそらく最も難しい部分です。そこから、転置インデックスは多くのテキスト処理を必要とし、大きな結果を生成しますが、基本的には非常に単純です。すべてのドキュメントをスキャンして、単語とその場所のリストを作成するだけです(通常は非常に一般的なものを除外した後) 「a」、「an」、「and」など、意味のある検索用語ではない単語)は、それらすべてを1つの大きなインデックスにまとめます。

完全なインデックスのサイズを考えると、実際のメモリに簡単に収まるように十分に小さい第2レベルのインデックスを追加すると便利なことがよくあります(たとえば、数百エントリ程度に制限します)。非常に小さい(ただし、多少効果がない)バージョンは、単語の最初の文字だけを使用するため、「A」の単語は0から始まり、「B」は12345から、「C」は34567から始まります。ただし、これはあまり効果的ではありません。たとえば、「X」よりも「A」で始まる単語の方がはるかに多くなります。インデックスを作成してから、インデックス全体に等間隔で配置された数百(またはその他)の単語を選択する方が効果的です。次に、それを第1レベルのインデックスとして使用します。理論的には、B +ツリーのようなものなど、かなり複雑になる可能性がありますが、それは s通常はやり過ぎです。100万のドキュメントのうち、インデックスのサイズに大きな違いをもたらすのに十分な頻度で使用される単語が10万語未満になる可能性があります。それでも、エントリのかなりの数は、実際の単語ではなく、タイプミスのようなものになります...

于 2010-03-16T03:52:22.153 に答える
1

LuceneやSphinxなどのF/OSSツールを使用したくない理由を詳しく説明したいと思うかもしれません。

于 2010-03-16T03:26:11.633 に答える
1

あなたがまだそれを探しているなら、この本はあなたの答えを持っていると思います。

http://nlp.stanford.edu/IR-book/information-retrieval-book.html

于 2011-01-20T05:24:31.107 に答える
0

Hadoopから始めたいと思うかもしれません。インデックス構築をクラスター全体に効果的に分散します。どの言語でも使用できます。JavaとPythonをお勧めします。Hadoop / MapReduceを使用すると、Webページに簡単にインデックスを付けることができます。ただし、それらはディスクにキャッシュ/保存する必要があり、最初にテキストを抽出するためにパーサー/トークンライザーが必要になります。ネット上には無料で入手できるパーサーがいくつかあります。手動で実行したい場合は、ここから開始できます。インデックスを作成したら、それを保存するのは別のタスクです。

于 2010-09-17T06:32:22.343 に答える