搜索适配器¶
继承 BaseSearch 类即可创建自定义搜索适配器。然后创建新类的实例,并在创建 WebSupport 对象时将其作为 search 关键字参数传递:
support = WebSupport(srcdir=srcdir,
builddir=builddir,
search=MySearch())
有关创建自定义搜索适配器的更多信息,请参见下方的 BaseSearch 类的文档。
在 1.6 版本发生变更: BaseSearch类从sphinx.websupport.search移动到sphinxcontri.websupport。
方法¶
以下方法是在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调用以获取搜索结果。此方法编译在
extracting 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 -- 搜索查询