python-doc-ja / python-doc-ja

Python ドキュメント日本語訳プロジェクト
141 stars 8 forks source link

リスト内包表記 などのpython キーワードで検索可能にしてほしい #792

Open yabuki opened 6 years ago

yabuki commented 6 years ago

こんにちは。

ドキュメントを日本語の「リスト内包表記」で検索した所0件で悲しい気持ちになりました。 可能なら日本語でもヒットするようにしていただけると助かります。

taketakeyyy commented 6 years ago

こんにちは。 気になって調べてみました。ベストプラクティスは見つかっておりません。

https://docs.python.org/ja/3.8/tutorial/datastructures.html#list-comprehensions

上記のURLのドキュメント中に「リスト内包表記」の文字列は存在するので、検索エンジンが原因でしょうか。(OpenSearchの設定?)

色々試しましたところ、

といった結果なので、部分文字列検索ではなく単語検索のようなことをしていると思われます。

言語をEnglishにして以下の単語を検索した場合、

となるので、一概には言えませんが、やはり単語検索している可能性が高いです。

OpenSearchに詳しくないのでもしかしたら別の方が解決策を知っているかもしれませんが、場当たり的な対処法として「細かい単語で区切って検索する」という方法があるようです。

shimizukawa commented 6 years ago

html_search_option のデフォルトでは、Sphinx本体側でもっている検索インデックスを作るために、元の文章をTinySegmenter(のPython実装)を使って分かち書きしています。 http://chasen.org/~taku/software/TinySegmenter/

Sphinxのビルド時に生成される検索インデックス https://docs.python.org/ja/3.8/searchindex.js を「内包( \u5185\u5305 ) 」で探してみると、分割された状態になっていることがわかります。

ユーザーが検索ボックスに入力する単語は、JS実装のTinySegmenterで分かち書きされ、Sphinxの用意した検索インデックスで検索するのですが、その分かち書きがうまく動作していない可能性がありそうです。

shimizukawa commented 6 years ago

共通するインデックス番号 99,433,451 それぞれのページ

docnames[99] == 'howto/functional'
docnames[433] == 'tutorial/datastructures'
docnames[451] == 'whatsnew/2.0'
shimizukawa commented 6 years ago

やっぱり、検索語が分割されてないですね。 image

Sphinx自体の問題なのかどうか、調べてみます。

shimizukawa commented 6 years ago

検索語が分割される前提でコメントしたけど、そのような実装はなさそう( https://github.com/sphinx-doc/sphinx/pull/3154 で実装してあると記憶違いしていた)。

また、クライアントサイドの分かち書きを設定で差し込む仕組みも現状はないので、実現するには以下が必要そうです。

  1. クライアントサイドの単語分割の仕組みをプラグインで設定可能とする(サーバーサイドの単語分割は現状でもプラグインで設定可能)
  2. プラグインを用意する(JSのTinySegmenterを使うコードでよさそう)

要望を https://github.com/sphinx-doc/sphinx/issues に書いてくれるとうれしいです

cocoatomo commented 6 years ago

Workaround として Google で「site:docs.python.org/ja/2.7 リスト内包表記」や「site:docs.python.org/ja/2 リスト内包表記」といった文言で検索してください.

cocoatomo commented 6 years ago

一般的な話として, issue の文面は起きている問題やどうして欲しいかを整理して書くものとなっています.

これまで, そういう形式を明示的には強制はしていなかったのですが, これからは強制するものとしていきたいと思います. これは, issue の作成者以外の人にも問題の内容が分かるようにするためと, issue を閉じる条件を厳密にするためです.