Kouhei Sutou
kou****@clear*****
2012年 5月 16日 (水) 14:40:36 JST
須藤です。 In <20120****@gmail*****> "[groonga-dev,00843] Re: rroonga での scoreの設定方法" on Thu, 10 May 2012 16:36:34 +0900, Shinya Kawaji <kawaj****@gmail*****> wrote: >> result_set = Groonga["Site"].select >> # ↑が--filter "1"相当 >> result_set.select("_score = rand() && false", :syntax => :script) >> # ↑が--scorer "_score = rand()"相当 >> result_set.sort(["_score"]) >> # ↑が--sortby "_score"相当 > > ありがとうございます。なるほど、そのような書式をすると分かりました。 > まだ試せていないですが、やってみます。 はい! > 善し悪しはよく分からないのですが、selfをすり替えることだけが問題であれば、 > ブロック引数を「関数を受け付けるためだけのレシーバ」にすることになります > でしょうか。 > > result_set.execute do |record| > record.score = record.eval do |exec| > exec.geo_distance(location, "128515259x503187188") > end > end はい、そうなります。 ただ、これだと「exec.geo_distance」の部分がちょっと野暮った いかなぁと思うんですよねぇ。groonga的には「geo_distance」は メソッドではなくて関数なので、rroongaでもそんな感じで使って いる雰囲気を出したいなぁと思うのです。 > しかし、:syntax => :script を使った方法は分かりましたので、書式について > は「良いものを思いついてから」で良いかもしれません。 そうですねぇ。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) groongaサポート: http://groonga.org/ja/support/ プログラミングが好きなソフトウェア開発者を募集中: http://www.clear-code.com/recruitment/