搜索适配器

要创建自定义搜索适配器,您需要继承 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 转换为文本并将其传递给 add_document()。您可能不想重写此方法,除非您需要访问 doctree。请重写 add_document()

参数:
  • pagename – 要索引的页面名称

  • filename – 原始源文件的名称

  • title – 要索引的页面标题

  • doctree – 是页面的 docutils 文档树表示

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)[源代码]

query() 调用,以检索搜索查询 q 的搜索结果。这应返回一个可迭代对象,其中包含以下格式的元组

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

pathtitle 是传递给 add_document() 的相同值,context 应该是文档中搜索查询周围的简短文本片段。

extract_context() 方法提供了一种创建 context 的简单方法。

参数:

q – 搜索查询

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

从文档的完整 text 中提取搜索查询的上下文。

参数:
  • text – 要为其创建上下文的文档的完整文本

  • length – 要返回的上下文片段的长度。