搜索适配器¶
要创建自定义搜索适配器,您需要继承 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 [source]¶
由构建器调用以初始化搜索索引器。changed 是将重新索引的页面名称列表。您可能希望在索引开始之前从搜索索引中删除这些页面。
- 参数:
changed – 将重新索引的页面名称列表
- BaseSearch.feed(pagename, filename, title, doctree)[source]¶
由构建器调用以将 doctree 添加到索引中。将 doctree 转换为文本并将其传递给
add_document()
。除非您需要访问 doctree,否则您可能不希望重写此方法。而是重写add_document()
。- 参数:
pagename – 要索引的页面的名称
filename – 原始源文件的名称
title – 要索引的页面的标题
doctree – 是页面的 docutils doctree 表示形式
- BaseSearch.add_document(pagename, filename, title, text)[source]¶
由
feed()
调用以将文档添加到搜索索引中。此方法应执行将单个文档添加到搜索索引所需的所有操作。pagename 是正在索引的页面的名称。它是源文件的相对路径和文件名(减去扩展名)的组合。例如,如果源文件为“ext/builders.rst”,则 pagename 将为“ext/builders”。在处理查询时,需要将此值与搜索结果一起返回。
- 参数:
pagename – 正在索引的页面的名称
filename – 原始源文件的名称
title – 页面的标题
text – 页面的完整文本
- BaseSearch.query(q)[source]¶
由网页支持 API 调用以获取搜索结果。此方法编译将在
extracting context
时使用的正则表达式,然后调用handle_query()
。除非您不想使用包含的extract_context()
方法,否则您不希望重写此方法。而是重写handle_query()
。- 参数:
q – 搜索查询字符串。
- BaseSearch.handle_query(q)[source]¶
由
query()
调用以检索搜索查询 q 的搜索结果。这应该返回一个可迭代对象,其中包含以下格式的元组(<path>, <title>, <context>)
path 和 title 与传递给
add_document()
的值相同,而 context 应为文档中搜索查询周围文本的简短文本片段。extract_context()
方法提供了一种创建 context 的简单方法。- 参数:
q – 搜索查询