Algolia インデックスを最新の状態に保つためにサイトマップをクロールする単純なノード ワーカー。
インデックスを作成する実際のテキスト コンテンツを見つけるために、単純な CSS セレクターを使用します。
このアプリは Algolia のライブラリを使用しています。
Web サイト全体を定期的にクロールするには、このスクリプトを crontab 経由で実行する必要があります。
<loc>
ノード、つまりurlset/url/loc
が含まれている必要があります。npm i algolia-webcrawler -g
git clone [email protected]:DeuxHuitHuit/algolia-webcrawler.git
git clone https://github.com/DeuxHuitHuit/algolia-webcrawler.git
algolia-webcrawler --config config.json
cd でプロジェクトのルートに移動し、 node app
実行します。
構成は config.json ファイルを介して行われます。
--config フラグを使用して、他の場所に保存されている config.json ファイルを選択できます。
node app --config my-config.json
最低限、config.json を編集して、「app」、「cred」、「indexname」、および少なくとも 1 つの「sitemap」オブジェクトのオプションに値を設定できます。複数のサイトマップがある場合は、すべてをリストしてください。サブサイトマップはクロールされません。
ほとんどのオプションは必須です。特に明記されていない限り、デフォルトは提供されません。
アプリの名前。
Algolia 資格情報オブジェクト。 「cred.appid」と「cred.apikey」を参照してください。
Algolia アプリ ID。
生成された Algolia API キー。
Web サイトに対して行われる各リクエスト間の単純な遅延 (ミリ秒単位)。
エントリが更新されずに存続できる最大ミリ秒数。実行するたびに、アプリは古いエントリを検索して削除します。古いエントリを削除したくない場合は、この値を 0 に設定します。
古いエントリを削除するときに適用されるフィルタ文字列。更新されない古いレコードを保持したい場合に便利です。古いレコードでフィルターに一致するレコードのみが削除されます。
Algolia に送信されるレコードの最大サイズ (バイト単位)。デフォルトは 10,000 ですが、プランによって異なる場合があります。
レコードが大きすぎる場合 (maxRecordSize に基づく)、クローラーはテキスト キーから値を削除します。この属性を使用して、レコードが大きすぎる場合にどのキーをプルーニングする必要があるかを構成します。
インデックスに関連するさまざまな値を含むオブジェクト。
インデックス名。
Algolia のIndex#setSetting
メソッドへの引数として機能するオブジェクト。
この件に関しては、Algolia のドキュメントをお読みください。このメソッドに関して文書化されている有効な属性はどれでも使用できます。
どの属性がインデックス可能であるかを定義する文字列の配列。つまり、属性に対して全文検索が実行されます。可能な属性の完全なリストについては、「保存されたオブジェクト」セクションを参照してください。
どの属性がフィルター可能であるかを定義する文字列の配列。つまり、これらの属性を使用して一部のレコードを返されないようにすることができます。可能な属性の完全なリストについては、「保存されたオブジェクト」セクションを参照してください。
この配列にはサイトマップ オブジェクトのリストが含まれている必要があります。
サイトマップは、url と lang という 2 つの String プロパティを持つ非常に単純なオブジェクトです。 「url」プロパティは、このサイトマップの正確な URL です。 「lang」プロパティは、サイトマップで見つかった URL で使用される主な言語を明示する必要があります。
さまざまな http オプションを含むオブジェクト。
ノードのusername:password
形式の認証文字列。認証が必要ない場合でも、空の文字列を指定する必要があります。
ページ HTML 内のコンテンツを検索するための CSS セレクターを含むオブジェクト。
ページのタイトルの CSS セレクター。
ページの説明用の CSS セレクター。
ページの画像の CSS セレクター。
ページのタイトルの CSS セレクター。
「key」プロパティの CSS セレクター。必要に応じてカスタム キーを追加できます。
セレクターは長い形式 (つまり、オブジェクトとして) を使用して定義することもでき、カスタム プロパティを指定できます。
値を検索する属性の名前。デフォルトは ['コンテンツ', '値'] です。
使用する実際の CSS セレクター。
チェックするノードの最大数。
インデックスを付ける必要のない要素を検索するための CSS セレクターを含むオブジェクト。これらの CSS セレクターはノードごとに照合され、すべての親に対してチェックされて、その親が除外されていないことが確認されます。
ページのテキストの除外要素の CSS セレクター。
「key」プロパティの除外要素の CSS セレクター。キーは selectors[key] で使用されるキーと一致する必要があります。
フォーマッタ文字列を含むオブジェクト。それらの値は、関連する CSS セレクターで取得された元の結果から削除されます。
ページのタイトルから削除する文字列。文字列の配列にすることもできます。
指定されたキーから削除する文字列。文字列の配列にすることもできます。
値のフォーマットに使用される解析関数。サポートされている型は、「整数」、「浮動小数点数」、「ブール値」、および「json」です。
指定されたキーに挿入されるデフォルト値。値が false の場合に設定されます。
レコードを保存する前にカスタム コードをロードするための JavaScript ファイルのリスト。唯一の要件は、次のインターフェイスを実装することです。ここで、 record
は保存されるオブジェクトであり、データは HTML です。
module . exports = ( record , data ) => {
record . value_from_plugin = 'Yay!' ;
} ;
すべての URL がブラックリスト内のすべての項目に対してチェックされます。完全な URL またはそのパス コンポーネントがブラックリストに含まれている場合、インデックスは作成されません。
Algoliaのサーバーに保存されているオブジェクトは次のとおりです
{
date : new Date ( ) ,
url : 'http://...' ,
objectID : shasum . digest ( 'base64' ) ,
lang : sitemap . lang ,
http : { } ,
title : '' ,
description : '' ,
image : '' ,
text : [ '...' ]
}
注意すべき点の 1 つは、元のテキスト ノードと実際の値の関係を保持しようとしたため、テキストが配列であることです。 Algolia はこれをうまく処理します。
Algolia に URL を保存するたびに、Web サーバーに ping を送信するように 1 つの URL を設定できます。 Web サーバーは次の情報を含む投稿を受信します。
result=[success|error]
action=[update|delete]
url=the url inserted
last-modified=[the http header value]
source=algolia-crawler
インデックス作成は実行のたびに自動的に行われます。インデックス作成の仕組みを調整するには、index.settings 構成オプションを参照してください。
マサチューセッツ工科大学
Deux Huit Huit がモントリオールで愛を込めて作りました
著作権 (c) 2014-2019