検索アダプター

カスタム検索アダプターを作成するには、BaseSearch クラスをサブクラス化する必要があります。次に、新しいクラスのインスタンスを作成し、WebSupport オブジェクトを作成するときに、そのインスタンスを search キーワード引数として渡します。

support = WebSupport(srcdir=srcdir,
                     builddir=builddir,
                     search=MySearch())

カスタム検索アダプターの作成の詳細については、以下の BaseSearch クラスのドキュメントを参照してください。

class sphinxcontrib.websupport.search.BaseSearch[ソース]

検索アダプターのインターフェースを定義します。

バージョン 1.6 で変更: BaseSearch クラスは、sphinx.websupport.search から sphinxcontrib.websupport.search に移動しました。

メソッド

以下のメソッドは、BaseSearch クラスで定義されています。一部のメソッドはオーバーライドする必要はありませんが、一部 (add_document() および handle_query()) は、サブクラスでオーバーライドする必要があります。動作する例については、組み込みの whoosh 用のアダプターを参照してください。

BaseSearch.init_indexing(changed: Sequence[str] = ()) None[ソース]

ビルダーによって呼び出され、検索インデクサーを初期化します。changed は、再インデックス化されるページ名のリストです。インデックス作成を開始する前に、検索インデックスからこれらを削除することをお勧めします。

パラメーター:

changed – 再インデックス化されるページ名のリスト

BaseSearch.finish_indexing()[ソース]

書き込みが完了したときにビルダーによって呼び出されます。インデックス作成が完了した後、最終処理またはクリーンアップアクションを実行するために使用します。

BaseSearch.feed(pagename, filename, title, doctree)[ソース]

インデックスに doctree を追加するために、ビルダーによって呼び出されます。doctree をテキストに変換し、add_document() に渡します。doctree にアクセスする必要がない限り、これをオーバーライドする必要はないでしょう。代わりに、add_document() をオーバーライドしてください。

パラメーター:
  • pagename – インデックス化されるページの名前

  • filename – 元のソースファイルの名前

  • title – インデックス化されるページのタイトル

  • doctree – ページの docutils doctree 表現

BaseSearch.add_document(pagename, filename, title, text)[ソース]

検索インデックスにドキュメントを追加するために、feed() によって呼び出されます。このメソッドは、単一のドキュメントを検索インデックスに追加するために必要なすべての処理を実行する必要があります。

pagename は、インデックスが作成されるページの名前です。拡張子を除いた、ソースファイルの相対パスとファイル名の組み合わせです。たとえば、ソースファイルが "ext/builders.rst" の場合、pagename は "ext/builders" になります。これは、クエリを処理するときに検索結果とともに返す必要があります。

パラメーター:
  • pagename – インデックス化されるページの名前

  • filename – 元のソースファイルの名前

  • title – ページのタイトル

  • text – ページの全文

BaseSearch.query(q)[ソース]

検索結果を取得するために、Web サポート API によって呼び出されます。このメソッドは、コンテキストを抽出 する際に使用する正規表現をコンパイルし、次に handle_query() を呼び出します。付属の extract_context() メソッドを使用しない場合を除き、これをオーバーライドする必要はないでしょう。代わりに、handle_query() をオーバーライドしてください。

パラメーター:

q – 検索クエリ文字列。

BaseSearch.handle_query(q)[ソース]

検索クエリ q の検索結果を取得するために、query() によって呼び出されます。これは、次の形式のタプルを含むイテラブルを返す必要があります。

(<path>, <title>, <context>)

pathtitleadd_document() に渡された同じ値であり、context はドキュメント内の検索クエリを囲む短いテキストスニペットである必要があります。

extract_context() メソッドは、context を作成する簡単な方法として提供されています。

パラメーター:

q – 検索クエリ

BaseSearch.extract_context(text, length=240)[ソース]

ドキュメントの全文 text から検索クエリのコンテキストを抽出します。

パラメーター:
  • text – コンテキストを作成するドキュメントの全文

  • length – 返すコンテキストスニペットの長さ。