搜尋配接器

若要建立自訂搜尋配接器,您需要繼承 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)[來源]

由網路支援 API 呼叫以取得搜尋結果。此方法編譯正規表示式,以在 擷取 context 時使用,然後呼叫 handle_query()。除非您不想使用內含的 extract_context() 方法,否則您不會想要覆寫此方法。請改為覆寫 handle_query()

參數:

q – 搜尋查詢字串。

BaseSearch.handle_query(q)[來源]

query() 呼叫,以擷取搜尋查詢 q 的搜尋結果。這應傳回包含以下格式元組的可迭代物件

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

pathtitle 是傳遞至 add_document() 的相同值,而 context 應為文件中搜尋查詢周圍文字的簡短文字片段。

extract_context() 方法提供了一種建立 context 的簡單方法。

參數:

q – 搜尋查詢

BaseSearch.extract_context(text, length=240)[來源]

從文件的完整 text 中擷取搜尋查詢的上下文。

參數:
  • text – 要為其建立上下文的文件完整文字

  • length – 要傳回的上下文片段長度。