設定ファイル
このページは PageTurner AI で翻訳されました(ベータ版)。プロジェクト公式の承認はありません。 エラーを見つけましたか? 問題を報告 →
DocSearchの設定ファイルは次のような構造です:
{
"index_name": "example",
"start_urls": ["https://www.example.com/docs"],
"selectors": {
"lvl0": "#content header h1",
"lvl1": "#content article h1",
"lvl2": "#content section h3",
"lvl3": "#content section h4",
"lvl4": "#content section h5",
"lvl5": "#content section h6",
"text": "#content header p,#content section p,#content section ol"
}
}
index_name
ここで指定するのは、レコードが保存されるAlgoliaインデックスの名前です。提供されるapiKeyはこのインデックス専用に制限されており、検索専用キーとなっています。
無料版DocSearchクローラーを使用する場合、indexNameは常に設定ファイル名と同じになります。自身でDocSearchを実行する場合は任意の名前を設定できます。
{
"index_name": "example"
}
DocSearchスクレイパーが実行されると、一時インデックスが構築されます。スクレイピング完了後、そのインデックスはindex_nameで指定された名前に移動されます(既存のインデックスは置き換えられます)。
デフォルトでは、一時インデックスの名前はindex_nameの値 + _tmp となります。
別の名前を使用するには、環境変数INDEX_NAME_TMPに異なる値を設定します。この変数は.envファイル内でAPPLICATION_IDとAPI_KEYと一緒に設定可能です。
start_urls
クローリングを開始するURLのリストを配列で指定します。クローラーはこれらのページからリンク(<a>タグ)を再帰的にたどりますが、別ドメインへのリンクやstop_urlsにマッチするリンクは追跡しません。
{
"start_urls": ["https://www.example.com/docs"]
}
selectors_keyによるセレクターのカスタマイズ
URLに応じて詳細なセレクターセットを定義できます。start_urls内でselectors_keyパラメーターを使用してください。
{
"start_urls": [
{
"url": "http://www.example.com/docs/faq/",
"selectors_key": "faq"
},
{
"url": "http://www.example.com/docs/"
}
],
[…],
"selectors": {
"default": {
"lvl0": ".docs h1",
"lvl1": ".docs h2",
"lvl2": ".docs h3",
"lvl3": ".docs h4",
"lvl4": ".docs h5",
"text": ".docs p, .docs li"
},
"faq": {
"lvl0": ".faq h1",
"lvl1": ".faq h2",
"lvl2": ".faq h3",
"lvl3": ".faq h4",
"lvl4": ".faq h5",
"text": ".faq p, .faq li"
}
}
}
スクレイパーはURLに基づいて適切なサブセットを見つけるため、start_urlsアイテムを順に検査し、最初にマッチした設定を適用します。
URLがhttp://www.example.com/en/api/で、設定が以下の場合:
{
"start_urls": [
{
"url": "http://www.example.com/doc/",
"selectors_key": "doc"
},
{
"url": "http://www.example.com/doc/faq/",
"selectors_key": "faq"
},
[…],
]
}
docに関連するセレクターセットのみが適用されます。正し い設定方法は前述の通り逆順に定義することです。
start_urlsアイテムにselectors_keyが定義されていない場合、defaultセットが使用されます。このフォールバック用セレクターセットの設定を忘れないでください。
正規表現の使用
start_urlsとstop_urlsでは正規表現を使用して複雑なパターンを表現できます。正規表現の配列かオブジェクトを定義可能で、オブジェクトの場合は少なくとも到達可能なページを指すurlキーが必要です。
正規表現をオブジェクトで定義する場合、特定のURLパターンに注入されるvariablesキーも定義できます。次の例でこの機能を明確に示します:
{
"start_urls": [
{
"url": "http://www.example.com/docs/(?P<lang>.*?)/(?P<version>.*?)/",
"variables": {
"lang": ["en", "fr"],
"version": ["latest", "3.3", "3.2"]
}
}
]
}
この構文を使用する利点として、http://www.example.com/docs/en/latestにマッチするページから抽出された全レコードにlang: enやversion: latest属性が付与されます。これによりfacetFiltersでのフィルタリングが可能になります。
次の例はUIが特定の言語とバージョンにマッチする結果をフィルタリングする方法を示しています。
docsearch({
[…],
algoliaOptions: {
'facetFilters': ["lang:en", "version:latest"]
},
[…],
});
カスタムタグの使用
正規表現なしで特定ページにカスタムタグを適用できます。tagsキーにタグリストを追加してください。これらのタグはAlgoliaでファセットとして自動追加され、値に基づくフィルタリングが可能になります。
{
"start_urls": [
{
"url": "http://www.example.com/docs/concepts/",
"tags": ["concepts", "terminology"]
}
]
}
JSスニペット例:
docsearch({
[…],
algoliaOptions: {
'facetFilters': ["tags:concepts"]
},
});
ページランクの使用
特定ページの重要度を調整します。このパラメーターはページから生成されるレコードの優先度を上げます。高いpage_rankを持つページは低いpage_rankのページより先に表示されます。負の値を含む任意の数値を指定可能です。
{
"start_urls": [
{
"url": "http://www.example.com/docs/concepts/",
"page_rank": 5
},
{
"url": "http://www.example.com/docs/contributors/",
"page_rank": 1
}
]
}
この例では、_Concepts_ページから生成されたレコードは_Contributors_ページの結果より優先的に表示されます。
ページ単位のカスタムセレクター使用
ウェブサイトのマークアップがページごとに大きく異なり、汎用的なセレクタを使用できない場合、セレクタを名前空間化し、特定のページに適用するセレクタセットを指定できます。
{
"start_urls": [
"http://www.example.com/docs/",
{
"url": "http://www.example.com/docs/concepts/",
"selectors_key": "concepts"
},
{
"url": "http://www.example.com/docs/contributors/",
"selectors_key": "contributors"
}
],
"selectors": {
"default": {
"lvl0": ".main h1",
"lvl1": ".main h2",
"lvl2": ".main h3",
"lvl3": ".main h4",
"lvl4": ".main h5",
"text": ".main p"
},
"concepts": {
"lvl0": ".header h2",
"lvl1": ".main h1.title",
"lvl2": ".main h2.title",
"lvl3": ".main h3.title",
"lvl4": ".main h5.title",
"text": ".main p"
},
"contributors": {
"lvl0": ".main h1",
"lvl1": ".contributors .name",
"lvl2": ".contributors .title",
"text": ".contributors .description"
}
}
}
ここでは、すべてのドキュメントページがselectors.defaultで定義されたセレクタを使用し、./concepts配下のページはselectors.conceptsを、./contributors配下のページはselectors.contributorsを使用します。
selectors
このオブジェクトには、レコード階層を作成するために使用されるすべてのCSSセレクタが含まれます。最大6レベル(lvl0、lvl1、lvl2、lvl3、lvl4、lvl5)とtextを設定できます。
デフォルト設定では、ページのtitleまたはh1をlvl0、h2をlvl1、h3をlvl2、pをtextとしてターゲットしますが、これはマークアップに大きく依存します。
textキーは必須ですが、適切な関連性の深さを確保するため、lvl0、lvl1、lvl2も設定することを強く推奨します。
{
"selectors": {
"lvl0": "#content header h1",
"lvl1": "#content article h1",
"lvl2": "#content section h3",
"lvl3": "#content section h4",
"lvl4": "#content section h5",
"lvl5": "#content section h6",
"text": "#content header p,#content section p,#content section ol"
}
}
セレクタは文字列として渡すか、selectorキーを含むオブジェクトとして渡せます。その他の特殊キーは後述の通り設定可能です。
{
"selectors": {
"lvl0": {
"selector": "#content header h1"
}
}
}
グローバルセレクタの使用
セレクタを通じたコンテンツ抽出のデフォルト手法は、HTMLマークアップを上から下へ読み取る方法です。これはヘッダー階層のような半構造化コンテンツで有効ですが、関連情報が同じフローに含まれない場合(タイトルがヘッダーやサイドバーに含まれない場合など)には機能しません。
このような場合、セレクタをグローバルに設定できます。これによりページ全体がマッチ対象となり、そのページから抽出されるすべてのレコードで同じ値が使用されます。
{
"selectors": {
"lvl0": {
"selector": "#content header h1",
"global": true
}
}
}
textセレクタをグローバルに設定することは推奨しません。
デフォルト値の設定
セレクタがページ上の有効な要素にマッチしない場合、フォールバックとしてdefault_valueを定義できます。
{
"selectors": {
"lvl0": {
"selector": "#content header h1",
"default_value": "Documentation"
}
}
}
不要な文字の除去
一部のドキュメントでは、見出しに#や›などの特殊文字を追加しています。これらの文字はスタイリッシュですが意味を持たず、検索結果にインデックスされるべきではありません。
strip_charsキーを設定することで、最終的なインデックス値から除外したい文字リストを定義できます。
{
"selectors": {
"lvl0": {
"selector": "#content header h1",
"strip_chars": "#›"
}
}
}
strip_charsは設定ファイルのルートに直接定義することも可能で、その場合はすべてのセレクタに適用されます。
{
"strip_chars": "#›"
}