搜索适配器

要创建自定义搜索适配器,您需要将 BaseSearch 课 然后创建新类的实例并将其作为 search 创建时的关键字参数 WebSupport 对象::

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

有关创建自定义搜索适配器的更多信息,请参阅 BaseSearch 下面的班级。

class sphinxcontrib.websupport.search.BaseSearch[源代码]

定义搜索适配器的接口。

在 1.6 版本发生变更: BaseSearch类将从sphinx.websupport.earch移至sphinxcontri.websupport.earch。

方法

BaseSearch类中定义了以下方法。有些方法不需要重写,但有些方法 (add_document()handle_query() )必须在您的子类中重写。要获得一个有效的示例,请看一下用于呼呼的内置适配器。

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/builder”。处理查询时需要与搜索结果一起返回。

参数:
  • pagename -- 被编入索引的页面的名称

  • filename -- 原始源文件的名称

  • title -- 页面标题

  • text -- 页面全文

BaseSearch.query(q)[源代码]

由网络支持API调用以获取搜索结果。此方法编译要在以下情况下使用的正规表达式 extracting 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 -- 要返回的上下文片段的长度。