Solrでクエリ時にNOWに時間を足す
弊社ではsolrを検索エンジンとして使っているプロジェクトがいくつかあります。
ここ最近はRubyOnRailsでの開発ばかりをやっていてSolrは触っていなかったのですが、最近になって触る機会がまた増えてきました。
そして、今日は時刻検索する場合にすこしハマりました。
検証環境
- Solr 5.3.1
Solrでは現在時刻までのデータで絞り込みたい場合、以下の様な指定でフィルタをかけられます。
fq=published_at:[* TO NOW]
NOWが現在時刻を現していますが、このNOWはUTCの時刻になってしまうため、データがJSTの場合は+9時間する必要があります。
Solrのタイムゾーンを変たらどうかと考えてJettyの起動ファイルに以下のように環境変数を指定して試してみました。
if [ -z "$SOLR_TIMEZONE" ]; then SOLR_TIMEZONE='JST' fi
Solr自体のタイムゾーンはJSTになりましたが、クエリのNOWはUTCで指定されてしまい、うまく検索ができませんでした。
Solrの設定でどうにかするのは諦めてクエリ時に以下のように9時間分足して指定することでとりあえず解決しました。
published_at: [* TO NOW+9HOUR]
この後、結局データをJSTではなくUTCにすることになったので+9時間して投げていたクエリは元に戻しました。。。
TAG
エンジニア
金子 将範 rubyist
新しいことや難しい課題に挑戦することにやりがいを感じ、安定やぬるい事は退屈だと感じます。 考えるより先に手が動く、肉体派エンジニアで座右の銘は諸行無常。 大事なのは感性、プログラミングにおいても感覚で理解し、感覚で書きます。
TAG
- Android
- AWS
- Bitrise
- CodePipeline
- Firebase
- HTML
- iOS
- IoT
- JavaScript
- KPI
- Linux
- Mac
- Memcached
- MGRe
- MGReのゆるガチエンジニアブログ
- MySQL
- PHP
- PICK UP
- PR
- Python
- Ruby
- Ruby on Rails
- SEO
- Swift
- TIPS
- UI/UX
- VirtualBox
- Wantedly
- Windows
- アクセス解析
- イベントレポート
- エンジニアブログ
- ガジェット
- カスタマーサクセス
- サーバ技術
- サービス
- セキュリティ
- セミナー・展示会
- テクノロジー
- デザイン
- プレスリリース
- マーケティング施策
- マネジメント
- ラボ
- リーンスタートアップ
- 企画
- 会社紹介
- 会社紹介資料
- 勉強会
- 実績紹介
- 拡張性
- 採用
- 日常
- 書籍紹介
- 歓迎会
- 社内イベント
- 社員インタビュー
- 社長ブログ
- 視察
- 開発環境