Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    [SUCK]東北JAPAN
    @touhoku_japan_twitter
    ALTER USER user SET search_path TO "$user", public, pgroonga, pg_catalog;
    No rows found.
    Total runtime: 29.303 ms
    SQL executed.
    SHOW search_path

    search_path
    public

    1 row(s)
    Total runtime: 0.457 ms
    SQL executed.

    Kouhei Sutou
    @kou
    接続し直してみてもらえますか?ALTER USER ...の設定は接続したときに反映されるのです。
    [SUCK]東北JAPAN
    @touhoku_japan_twitter
    只今、接続し直しました。確かに期待する結果になりました。この度はお時間、お知恵を拝借頂きありがとうございました。
    Kouhei Sutou
    @kou
    それはよかったです。
    PHPPGADMINで実行した時の挙動がf不思議ですが。。。
    [SUCK]東北JAPAN
    @touhoku_japan_twitter
    PHPPGADMINでログアウト(接続をし直す)とSHOWで確認した所、確かに設定が反映されていました。
    このsearch_pathなどの変数の使い方リファレンス等はどこにあるのか教えていただけないでしょうか?ちょっと探せなかったので――。
    Kouhei Sutou
    @kou
    書こう書こうと思いつつ書けていないのです。。。
    http://pgroonga.github.io/ja/reference/operators/query.html#section-3
    [SUCK]東北JAPAN
    @touhoku_japan_twitter
    なるほど。今回の設定方法はここで実際に聞かなければ分からないことだったのですね。これはどうもありがとうございました。
    Kouhei Sutou
    @kou
    同じような問題を抱えている人を見かけたら助けてあげてもらえると助かります。
    [SUCK]東北JAPAN
    @touhoku_japan_twitter
    スライド、ブックマークしました。私がチャットに常駐している時に見かけたら協力致します。この度はありがとうございました。
    Kouhei Sutou
    @kou
    ありがとうございます。
    MIKAMI Yoshiyuki
    @yoshuki_twitter

    こんにちは、はじめまして。いまRailsアプリでPGroongaを使おうとしています。
    検索結果をpgroonga.score関数のスコアでソートしたいのですが、実装方法について悩んでいまして、お知恵をお借りできませんでしょうか。
    http://saikyoline.jp/weblog/2016/11/01/113129.html

    全文検索をする部分は専用のスコープを作っていて、いまのところの実装はこのようになっています。
    http://saikyoline.jp/weblog/2016/10/27/232624.html

    ククログさんの記事を元にやってみて、ひとつのスコープに納まってスッキリしたなと思っているのですが、このスコアでのソートが出来ず。うまい方法はありませんでしょうか。

    Kouhei Sutou
    @kou
    enable_seqscan = noでもインデックスが使われないということであっていますか!?
    MIKAMI Yoshiyuki
    @yoshuki_twitter
    分かりづらくてすみません。ARのto_sqlで作られるSQLをpsqlで直に流したところ、enable_seqscanを切ればインデックスが使われることは確認できています。
    ActiveRecordから使った時にどう実装するのがよいか、という話でした。
    Kouhei Sutou
    @kou
    なるほど。試しやすいようにこのRailsアプリケーションをGitHubにpushしてもらえませんか?
    https://github.com/kou/pgroonga-with-rails のようなイメージです。
    MIKAMI Yoshiyuki
    @yoshuki_twitter
    再現するアプリケーションを作ってGitHubにpushしました。
    https://github.com/yoshuki/article_search_with_pgroonga
    よろしくお願いします。
    Kouhei Sutou
    @kou
    ありがとうございます。
    強引ですが、全文検索するコントローラーは絞られると思うのでこんな感じでどうでしょうか?
    diff --git a/app/controllers/articles_controller.rb b/app/controllers/articles_controller.rb
    index afad92a..33d9abd 100644
    --- a/app/controllers/articles_controller.rb
    +++ b/app/controllers/articles_controller.rb
    @@ -9,6 +9,12 @@ class ArticlesController < ApplicationController
                     else
                       Article.none
                     end
    +    def @articles.exec_queries
    +      @klass.connection.exec_query("SET enable_seqscan TO off")
    +      super
    +    ensure
    +      @klass.connection.exec_query("SET enable_seqscan TO on")
    +    end
       end
    
       # GET /articles/1
    Article.full_text_search の後に何もつなげないことが確実なら Article.full_text_search の中でやってもいいかもしれません。
    Kouhei Sutou
    @kou
    いや、 extending した方がいいですね。
    diff --git a/app/models/article.rb b/app/models/article.rb
    index 7bfaa0d..4f118dd 100644
    --- a/app/models/article.rb
    +++ b/app/models/article.rb
    @@ -1,3 +1,12 @@
    +module DisableSequentialScan
    +  def exec_queries
    +    @klass.connection.exec_query("SET enable_seqscan TO off")
    +    super
    +  ensure
    +    @klass.connection.exec_query("SET enable_seqscan TO on")
    +  end
    +end
    +
     class Article < ApplicationRecord
       scope :full_text_search, -> (query, highlight = false) {
         operator = query.count('"') > 0 || extract_keywords(query).size > 1 ? '@@' : '%%'
    @@ -5,6 +14,7 @@ class Article < ApplicationRecord
         articles = select("#{quoted_table_name}.*, pgroonga.score(#{quoted_table_name}) AS pgroonga_score")
                    .where("title #{operator} ? OR body #{operator} ?", query, query)
                    .reorder('pgroonga_score DESC')
    +               .extending(DisableSequentialScan)
    
         return articles unless highlight
    MIKAMI Yoshiyuki
    @yoshuki_twitter
    SELECTの前後でSETが流れるのを確認し、無事スコアがとれるようになりました。ありがとうございます!
    extendingを知らなかったので、動きを確認します!
    MIKAMI Yoshiyuki
    @yoshuki_twitter
    まとめてブログに書きました。ありがとうございました!
    http://saikyoline.jp/weblog/2016/11/03/005750.html
    Kouhei Sutou
    @kou
    よかったです! extendingKaminariではどうやっているかなぁと思って調べたら見つけました。
    同じように困っている人を見かけたら助けてあげてください。
    MIKAMI Yoshiyuki
    @yoshuki_twitter
    はい!
    白烏
    @White_Raven777_twitter
    毎度毎度すみません
    Ubuntu 16.04LTS環境で、MySQLの更新が来たためmroongaがバージョン不一致でインストールできない現象が確認されました
    お手すきの際に、更新をお願いいたします m(_ _)m
    Kentaro Hayashi
    @kenhys
    たぶんMySQL 5.7.15 -> 5.7.16へのアップグレードだと思うのですが、最新版のMroonga 6.10は
    Depends: mysql-server-5.7-mroonga (= 6.10-2~xenial1), mysql-server (= 5.7.16-0ubuntu0.16.04.1)
    となっていて、バージョン不一致にはならなそうに思えます。インストールしようとしているバージョンは↑と予想しているのですがあっていますか?
    cod
    @cod3
    以前、freebsdのmariadbのpkgでMroongaのコンパイルオプションがデフォルトでoffになっていてMroongaがすぐに使えなかったので、メンテナのBernardさんにonにしてください。とメールしたのですが、今日返信が返ってきていて、「OQGraph特にclangへの接続に多数の問題があるから、自分でビルドしてね。See e.g. https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=213902 もし、日本のmroongaのコミュニティがあって、Mroongaがうまく機能するのを確認することを助けてくれれば、将来デフォルトでonにスイッチするだろう」というような返信いただきましたので、シェアしておきます。※あんま英語得意じゃないので誤訳してたらごめんなさい。
    Kentaro Hayashi
    @kenhys
    #213902をみるとビルド時の問題はなおっているようなので、あとは @cod3 さんがそれで大丈夫そうか確認してもらえばよさそうですね!Mroongaがデフォルトで有効になっていると嬉しい人もいるはずなのでとてもよいことだと思います。
    cod
    @cod3
    @kenhys 自分の手元では、portsでmariadbのMroongaオプションを付けてビルドした時に、自分の使っているMroongaの検索機能(TokenBigramIgnoreBlankSplitSymbolAlphaDigit、TokenBigramIgnoreBlankSplitSymbolAlphaDigit)は正常に動作しているように見えるので、それは伝えてみようと思います。Mrooga全体がうまく機能しているか?と言われると今いち私の回答では不十分かもしれません。もし、他にも有用な情報があれば、メンテナさんに伝えてもらえると嬉しいです!
    Kentaro Hayashi
    @kenhys
    公式サイトのチュートリアルがあるので http://mroonga.org/ja/docs/tutorial.html それが期待通りに動くのであればMroongaがうまく動いていると言って良いと思います。実際に @cod3 さんが試してみて大丈夫そうならBernardさんに公式チュートリアルがきちんと動いたよ!と伝えてもらえるとデフォルトでonにしてもらいやすいように思うのですがどうでしょうか?
    cod
    @cod3
    なるほど、自分の方で全て確認する余裕はないので、英語版のチュートリアルを紹介してみますね。http://mroonga.org/docs/tutorial.html
    Kentaro Hayashi
    @kenhys
    はい、それでお願いします!
    白烏
    @White_Raven777_twitter

    @kenhys 私の環境(Ubuntu 16.04LTS)では、以下のようなことが起きているようです

    mysql-server-5.7         : 5.7.16-0ubuntu0.16.04.1
    mysql-server-core-5.7    : 5.7.15-0ubuntu0.16.04.1
    mysql-server-5.7-mroonga : 6.1.0

    この状態なので、以下の状態が起きます

    mysql-server-5.7 : Depends: mysql-server-core-5.7 (= 5.7.15-0ubuntu0.16.04.1) but 5.7.16-0ubuntu0.16.04.1 is installed
    mysql-server-5.7-mroonga : Depends: mysql-server-5.7 (= 5.7.16-0ubuntu0.16.04.1) but 5.7.15-0ubuntu0.16.04.1 is installed
    (Depends: mysql-server-core-5.7=5.7.15-0ubuntu0.16.04.1)
            (Now: 5.7.15-0ubuntu0.16.04.1)
                   mysql-server-5.7 <-------------------------------+
                          |                                         |
                          |                                         |
                          |                              mysql-server-5.7-mroonga
                          V                                    (Now: 6.1.0)
                mysql-server-core-5.7      (Depends: mysql-server-5.7=5.7.16-0ubuntu0.16.04.1)
            (Now: 5.7.16-0ubuntu0.16.04.1)

    実際にインストールされる順番が問題なのですかね

    白烏
    @White_Raven777_twitter
    apt-get が上記の関係でロックされて死んでしまったので、 /var/lib/dpkg/status で Depends を騙しつつ、対象パッケージを手動で一個ずつ適切な順番で処理しなおして、なんとかぬけ出すことが出来ました。お騒がせしました
    Kentaro Hayashi
    @kenhys
    @White_Raven777_twitter MySQL 5.7.15をインストールした状態から追試してみようかと思ったのですが、セキュリティアップデートのせいかもうパッケージを入手できなくなっていて無理でした。もしまた同じような問題が発生するようであれば、そのときに対策とれないか調べてみます。
    torinky
    @torinky
    windows版のmroonga 6.11ですが64bit版のリンクが切れてますね・・・。前も同じようなことがあったような気がするのでやりかたを見直したほうが良いかもしれませんね。
    ブログからのリンクです。http://mroonga.org/ja/docs/install/windows.html#zip
    torinky
    @torinky
    同じく、windows版ダウンロードリンク下のインストール手順の中でmysqld.exe --defautls-file=・・・でiniを指定する例が示されていますが、これでは起動しませんでした。mysqld --defaults-extra-file=・・・としたら起動しました。
    Masafumi Yokoyama
    @myokoym
    ご報告ありがとうございます!リンクのほうは直しました。
    インストール手順のほうは明日対応予定です。

    前も同じようなことがあったような気がするのでやりかたを見直したほうが良いかもしれませんね。

    ですよね…。自動化できないか検討してみます。