Skip to content

Instantly share code, notes, and snippets.

@mocobeta
Last active November 16, 2015 03:34
Show Gist options
  • Save mocobeta/741e658edaaa297fc3b2 to your computer and use it in GitHub Desktop.
Save mocobeta/741e658edaaa297fc3b2 to your computer and use it in GitHub Desktop.
Sphinx AND検索の罠?

[Memo][Sphinx] AND検索の罠?

AND 検索のサポートについて

Sphinx の検索は、スペース区切りで複数の単語を入力すると、すべての単語が含まれるドキュメントのみがヒットする(AND検索になる)。 実装はこちら: https://github.com/sphinx-doc/sphinx/blob/master/sphinx/themes/basic/static/searchtools.js_t#L363 (performTermsSearch関数)

・・・はずなのだけれど、直観的に不思議な挙動をする場合がある様子。

Sphinx-users.jp での例

1単語での検索

複数単語のAND検索

直観的にわかるケース

"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" を含む」だとヒットしない。

TODO

  • html_search_language='ja' のときだけ発生する問題? 他の言語でもこうなる?
  • 仕様なのか Issue なのか...
  • PR つくる
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment