0

URL、IP、国、州などのデータを含むデータベースがあります。

URL をクロールし、値を URL にマップする必要があります。

たとえば、URL がhttp://www.google.comで国が USA の場合、クロールされたデータで国をマッピングする必要があります。

データベース クローラーを試してみましたが、非常に遅いです。500 万の URL があるためです。

オープン検索サーバーによってデータベースの値をクロールされたデータにマップする他のオプションはありますか??

前もって感謝します。

4

1 に答える 1

1

OpenSearchServer 1.3.1 を使用していますか?

その場合、分離されたインデックスを使用して場所パラメータを格納できます (データベースによって提供されます)。

検索リクエストでは、「結合クエリ」を使用して、全文検索と同時にメタデータ インデックスからデータを取得します。

したがって、2 つのインデックスを取得します: 1. 通常の列のインデックス: タイトル、コンテンツ、URL、ホスト名... 2. メタ データのインデックス: 国、州、IP、URL またはホスト名 (外部キーとして使用)。

メタデータ インデックスのフィールドマップでは、ページの Web クロールを回避するために、URL チェックボックスをオンにしないでください。クロール インデックスと結合するために必要なだけです。

MySQL を使用した 500 万の小さなデータのインデックス作成は高速です (約 10 分)。バッファサイズを適切に設定しましたか? 短いデータの場合、大きなバッファはインデックス化を高速化します。

遅くなるもう 1 つの理由は、OpenSearchServer に許可されているメモリの量です。ランタイム/システム パネルを見て、使用可能なメモリが十分にあることを確認します。通常、500 万のインデックスには 2 ~ 4 GB のメモリが必要です。

クロール キャッシュの使用を検討することもできます。これにより、実際に URL をクロールすることなく、インデックス構成を変更してクロール セッションを再開できます。ページがクロール キャッシュで使用可能な場合は、キャッシュが使用されます。

于 2012-12-23T08:51:37.097 に答える