Sphinx の検索は、スペース区切りで複数の単語を入力すると、すべての単語が含まれるドキュメントのみがヒットする(AND検索になる)。 実装はこちら: https://github.com/sphinx-doc/sphinx/blob/master/sphinx/themes/basic/static/searchtools.js_t#L363 (performTermsSearch関数)
・・・はずなのだけれど、直観的に不思議な挙動をする場合がある様子。
- "sphinxcon" で検索すると「SphinxCon JP 2012 (2012/9/16)」がヒット: http://sphinx-users.jp/search.html?q=sphinxcon&check_keywords=yes&area=default
- "html" で検索すると「SphinxCon JP 2012 (2012/9/16)」がヒット: http://sphinx-users.jp/search.html?q=html&check_keywords=yes&area=default
- "pycon" で検索すると「SphinxCon JP 2012 (2012/9/16)」がヒット: http://sphinx-users.jp/search.html?q=html&check_keywords=yes&area=default
直観的にわかるケース
"sphinxcon html" で検索すると「SphinxCon JP 2012 (2012/9/16)」がヒット: http://sphinx-users.jp/search.html?q=sphinxcon+html&check_keywords=yes&area=default
直観的に?なケース
"sphinxcon pycon" で検索すると、ゼロヒット: http://sphinx-users.jp/search.html?q=sphinxcon+pycon&check_keywords=yes&area=default
「SphinxCon JP 2012 (2012/9/16)」は "sphinxcon" と "pycon" の両方を含むので、ここでヒットしてほしい。
仕様だった。
"ドキュメントコンテンツ内"での AND と"ドキュメントタイトル内"での AND をとっている。 https://github.com/sphinx-doc/sphinx/blob/470bac3d1c17f2728573f96c2864ab07918692d2/sphinx/themes/basic/static/searchtools.js_t#L198
"sphinxcon pycon" だと, 「タイトルに "sphinxcon", "pycon" の両方を含む」 か 「コンテンツに "sphinxcon", "pycon" の両方を含む」ドキュメントがヒットするので、 「タイトルに"pycon", コンテンツに "sphinxcon" を含む」だとヒットしない。
html_search_language='ja' のときだけ発生する問題? 他の言語でもこうなる?仕様なのか Issue なのか...- PR つくる