ruby/docs.ruby-lang.org

るりまサーチのAPIの返すURLがおかしい?

Opened this issue · 3 comments

pocke commented

るりまサーチのAPIを試していたのですが、返してくるURLがおかしいようです。

次のようにcurlとjqをつかってURLを取り出してみると、https://docs.ruby-lang.org/ja/search/の後に、本来の検索結果のURLがついてきているようにみえます。また、検索結果のURLのスキーマがhttpsではなくhttpになっているので、httpsの方がより良さそうです。

$ curl -s 'https://docs.ruby-lang.org/ja/search/api:v1/query:open/' | jq '.entries[0].documents[0].url' 
"https://docs.ruby-lang.org/ja/search/http://docs.ruby-lang.org/ja/2.3.0/library/open=2duri.html"

期待するURL: https://docs.ruby-lang.org/ja/2.3.0/library/open=2duri.html
実際のURL: https://docs.ruby-lang.org/ja/search/http://docs.ruby-lang.org/ja/2.3.0/library/open=2duri.html

From clear-code/rurema-search#29

上のIssueをclear-code/rurema-searchに開いたところ、アプリケーションコードよりもデプロイの仕方に原因がありそうとコメントをもらったのでこちらにIssueをオープンします。


上のIssueを作った後にコードを眺めていたところ、このリポジトリの次のコードの当たりでオプションを設定しているようでした。

load_searcher_option.call(:document, "document.yaml")

ここで設定したbase_urlオプションが、APIが返すURLに関わってくるので、この設定が原因で意図しない表示になっていると思います。

https://github.com/clear-code/rurema-search/blob/7d5858ab4ab0d9c9eb5e91e14c54bd67e081c73a/lib/rurema_search/groonga_searcher.rb#L334-L341

znz commented

遅くなりましたが、 base_urlhttp://docs.ruby-lang.org/ja/ になっていたのを https://docs.ruby-lang.org/ja/ に修正しました。

backend の rurema-search の URL がくっついてしまう方については、
https://github.com/clear-code/rurema-search/blob/2697320aa5044b6dd5d0e2b35ababbd735a0291b/lib/rurema_search/groonga_searcher.rb#L221-L223
full_url で追加しているようで、設定ではなおらなさそうでした。

たとえば base_url の設定をパスのみの /ja/ に変更しても rurema-search のホストとポートになってしまってうまくいかなさそうでした。

kou commented

https://github.com/clear-code/rurema-search/blob/2697320aa5044b6dd5d0e2b35ababbd735a0291b/lib/rurema_search/groonga_searcher.rb#L125@request.urlを使っているのをX-Forwareded-XXXがあったらそいつらを優先するようにすればいいという感じですか?

znz commented

https://github.com/clear-code/rurema-search/blob/2697320aa5044b6dd5d0e2b35ababbd735a0291b/lib/rurema_search/groonga_searcher.rb#L125@request.urlを使っているのをX-Forwareded-XXXがあったらそいつらを優先するようにすればいいという感じですか?

その対応が入って base_url/ja/ のみに変更すれば、うまくいきそうです。