検索アダプタ

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

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

カスタムの検索アダプタを作る際のより詳しい情報は、これから説明する BaseSearch クラスのドキュメントを参照してください。

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

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

BaseSearchのメソッド

これらのメソッドがBaseSearchクラスに定義されています。いくつかのメソッドはオーバーライドする必要はありませんが、サブクラスでオーバーライドしなければならないもの(add_document() , handle_query())もあります。組み込みのwhoosh検索アダプタが、動作可能なサンプルとなっています。

BaseSearch.init_indexing(changed=[])[ソース]

検索のインデクサーを初期化するためにビルダーから呼ばれます。 changed は再インデックスされるページのリストです。インデックス作成が始まる前に検索インデックスからこれらを取り除くこともできます。

パラメータ:changed – 再インデックスされるページ名のリスト。
BaseSearch.finish_indexing()[ソース]

書き出しが完了した時にビルダーから呼ばれます。これはインデックス作成が完了した後の完了処理や後片付けに使います。

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

doctreeをインデックスに追加するために呼ばれます。 doctree をテキストに変換し、 add_document() に渡します。おそらく doctree にアクセスする必要がない限り上書きする必要はないはずです。代わりに add_document() を上書きしてください。

パラメータ:
  • pagename – インデックスされるページの名前。
  • filename – the name of the original source file
  • title – インデックスされるページのタイトル。
  • doctree – このページのdocutilsのdoctree表現
BaseSearch.add_document(pagename, filename, title, text)[ソース]

feed() によって呼ばれ、検索インデックスにドキュメントを追加します。この関数は単一のドキュメントを検索インデックスに追加するために必要なすべてのことを行う必要があります。

pagename はインデックスされるページの名前です。ソースファイルの相対パスとファイル名と拡張子を除いたファイル名の組み合わせです。例えば、もしソースファイルが “ext/builders.rst” の場合、 pagename は “ext/builders” となるでしょう。これは検索クエリを処理した検索結果として使われます。

パラメータ:
  • pagename – インデックスされるページの名前。
  • filename – the name of the original source file
  • title – そのページのタイトル。
  • text – そのページの完全なテキスト。
BaseSearch.query(q)[ソース]

検索結果を取得するためにWeb support APIから呼ばれます。この関数は extracting context でコンテキストを展開する時に正規表現をコンパイルし、それから handle_query() を呼び出します。 extract_context() を含みたくない場合にのみこの関数を上書きしたほうがよいでしょう。代わりに handle_query() を上書きしてください。

パラメータ:q – 検索クエリー文字列。
BaseSearch.handle_query(q)[ソース]

検索クエリー q に対する検索結果を取得するために query() によって呼び出されます。これは以下のフォーマットに従うiterableを返す必要があります:

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

pathtitleadd_document() に渡された同じ値であり、 context はドキュメント内で検索クエリー文字列の周りにある、テキストスニペットです。

extract_context() メソッドは context を作成するための簡単な方法です。

パラメータ:q – 検索クエリー
BaseSearch.extract_context(text, length=240)[ソース]

ドキュメントの完全な テキスト から検索文字列に対するコンテキストを展開します。

パラメータ:
  • text – コンテキスト作成に使われる、ドキュメントの完全なテキスト
  • length – 返却するコンテキストのスニペットの長さ。