搜索适配器

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

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

由生成器调用以初始化搜索索引器。 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/builders”。处理查询时,需要返回搜索结果。

参数:
  • pagename -- 正在索引的页的名称

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

  • title -- 页面标题

  • text -- 页面的全文

BaseSearch.query(q)[源代码]

由Web支持API调用以获取搜索结果。此方法编译当 extracting context 然后调用 handle_query() . 除非不想使用包含的 extract_context() 方法。重写 handle_query() 相反。

参数:

q -- 搜索查询字符串。

BaseSearch.handle_query(q)[源代码]

被称为 query() 检索搜索查询的搜索结果 q . 这将返回一个包含以下格式的元组的iterable::

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

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

这个 extract_context() 方法是创建 context .

参数:

q -- 搜索查询

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

从文档的全文中提取搜索查询的上下文 text .

参数:
  • text -- 要为其创建上下文的文档的全文

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