搜尋配接器¶
若要建立自訂搜尋配接器,您需要繼承 BaseSearch
類別。然後建立新類別的實例,並在您建立 WebSupport
物件時,將其作為 search 關鍵字引數傳遞。
support = WebSupport(srcdir=srcdir,
builddir=builddir,
search=MySearch())
如需建立自訂搜尋配接器的更多資訊,請參閱下方 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.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>)
path 和 title 是傳遞至
add_document()
的相同值,而 context 應為文件中搜尋查詢周圍文字的簡短文字片段。extract_context()
方法提供了一種建立 context 的簡單方法。- 參數:
q – 搜尋查詢