sphinx-doc/sphinx

searchindex.js contains rst_epilog matches for all pages in docs

Open

#4,248 opened on Nov 17, 2017

View on GitHub
 (1 comment) (0 reactions) (0 assignees)Python (1,985 forks)batch import
good first issuehelp wantedhtml search

Repository metrics

Stars
 (5,625 stars)
PR merge metrics
 (Avg merge 13d 10h) (8 merged PRs in 30d)

Description

Problem: rst_epilog values are returned for all pages when searched for.

My understanding is that the searchindex.js file is built from the doctrees cache. https://github.com/sphinx-doc/sphinx/blob/master/sphinx/search/__init__.py#L239

Each doctree file contains all of the rst_epilog values. As a result, these are included for every page when indexed, e.g. this is included in all doctrees files: .. |TEST1| replace:: TestWord

Reproduce:

  1. Add something like this to the conf.py and build
rst_epilog = '''
.. |TEST1| replace:: TestWord
.. |TEST2| replace:: TestWord2
'''
  1. Search the rebuilt docs for "testword"
  2. All pages in the doc set will be returned, and none will not actually contain "testword"
  3. if you take a look at searchindex.js you will see the rst_epilog values indexed for all pages, e.g. {testword2:[0,1,2],testword:[0,1,2]}

Env: Tested using Sphinx 1.5.5 and 1.6.5 & python 2.7.10

Regards, Brian

Contributor guide