Compare Groonga with SQL

I had to use groonga. The reason is simple, there is data only in groonga.

groonga も含め 全文検索エンジンを使うのは初めてだったので、 公式ドキュメントを見ながら探っていきました。 データベースで使用する SQL と groonga のクエリを比較してみると次のようになりました。 もともと別物なので参考程度に見ていただければと思います。

SELECT

We use SELECT to get some data from groonga, also from database. But there’s considerable difference between the structure of data between groonga and database. As for groonga, sql command is like the following.

Simple comparison is as follows.

Database groonga
表示カラム (listed after select) ––output_columns
Table from ––table
Search Condition where ––filter, ––query, ––match_column, ––scorer
Order order by ––sortby
Offset offset ––offset
Limit limit ––limit
Group group by ––drilldown (drilldown したときの件数指定などは下の説明を参照)
Logical Operator and, or &&, ||

Supplemental Explanation

––output_columns

検索結果に表示するカラムを指定する。カンマで区切ることにより、複数カラムを指定できる。

––query

全文検索を行う。

title カラムについて 文字列 “this” の全文検索を行う。

––match_columns, ––query

検索結果に含めるカラムを指定する。複数指定もできる。

––query と一緒に使い、 title カラムについて 文字列 “this” の全文検索を行う。

––filter

Specify query condition. Likewise javascript, we can use operator “==”, “<=“, “>”, etc. AND, OR should be represented as &&, ||.

––drilldown

バージョン4.0.1 の資料を見るかぎり、 drilldown に指定したそれぞれのカラムについてグループ化した結果が表示される。 column_1 と column_2 を指定していれば、 column_1 だけでグループ化した結果と、 column_2 でグループ化した結果が続けて表示される。 ORDER BY column_1, column_2 のようなことはできない。

drilldown の結果に対する件数指定(オフセットなど)は下記のように、 通常の ––sortby, ––offset, ––limit の頭に drilldown をつけて指定する。 drilldown した結果だけがほしければ、 ––limit0 を指定して出てくる通常カラムを制限する。

Specific Column

Column Name Description
_id ID column whose is generated by groonga automatically in query.
_key The column which contains primary key.
_score Virtual column in query result. (Likewise ROWNUM in Oracle DB.) It has higher number if the record matches to query condition more.
_nsubrecs The column which contains query drilldown result number when drilldown is used. It’s like COUNT function in SELECT COUNT(1) FROM ….

Python で自分自身のファイル名を取得する

python のスクリプト(.py) を作って、スクリプト内で自分自身のファイル名を種痘する場合のお話です。

abc.py ファイル を実行した場合に、 abc.log のようなログファイルを作る際に使えます。

カレントディレクトリを起点にしたファイル名

ここからは、次のようにしてモジュールを読み込む必要があります。

ディレクトリを除いたファイル名

ディレクトリに対してこれを実行すると、ディレクトリ名が取得できます。

ファイル名(拡張子なし)

“.” で文字列を区切ってリストにします。 “a.b.c” のように “.” が2つ以上ある場合は 最後の “.” で区切って (“a.b”, “c”) を返します。

path.basename(__file__)[0] をファイルの存在するディレクトリで実行した場合も同じ結果になります。 (crontab などで実行すると思わぬ結果になります。 “a/b.py” が (“a/b”, “.py”) になります。)

お米1合はいくらになるか

お米1合はいくら(値段)になるでしょうか。茶碗1杯のお米はいくらになるでしょうか。 毎日弁当を持って行っているのですが、果たしてどれくらい節約になっているのか気になりました。

前提条件

一般的な数字で計算します。 今回は次のようにします。

  • 炊飯前の 1合 のお米は 150g
  • 茶碗1杯は 0.5合

お米 10kg を 3,000円 で買う場合を想定します。 茶碗1杯のお米は 75g なので 3,000(円) ÷ 100,000(g) × 75(g) = 2.25(円) になります。 もうちょっとお米のブランドを上げて 1kg 4,000円 にすると、 茶碗1杯で 3円 になります。 1度にどれだけ炊飯するかによりますが、 炊飯にかかる電気代を含めても 茶碗1杯 あたり 13円 です(電気代は関東電気保安協会の値を使用)。

お弁当、是非持っていきましょう。 ごはんだけでも。

コンビニのおにぎりだったらいくら

コンビニのおにぎりはいくらのお米を使っているのでしょうか。 計算のため、次の前提をおきます。

  • コンビニのおにぎりに使われているお米は炊き上がり状態で 100g
  • 150g のお米を炊くと 340g のごはんになる

コンビニのおにぎりは 100(g) × 150(g) ÷ 340(g) = 44g のお米に相当します。 先ほどの 10kg 3,000円 のお米では 44g は 3,000(円) ÷ 100,000(g) × 44g = 1.32(円) になります。

Mother’s Day in 2014

母の日。それは、小売店によって仕掛けられた、販売促進戦略。

そんなことを考えていました。

しかし、妻から母の日にお礼をしなかったらいつお礼するのー!」といわれ、仕方なくギフトを考えることに。

そもそも、そんなモノでしか繋がらない関係は希薄であり、母の日にしかお礼ができないのは大きな問題であると思うのだが。

メロン

メロン嫌いな人はいないです、きっと。新宿高野が家の近くにあったので(楽天にもありますが)、そこのメロンをまず考えました。

でも・・・高いですよね。お財布に余裕があればいいかもしれません。確かに今まで親にもらったお金は数知れず・・・。

そして、もうすこし安いのを探しました。

フルーツ盛り合わせ

私が買ったのとは少し違いますが、こんな感じのやつを選びました。

母から聞いたのですが、高野のフルーツはどれも食べ頃のものが選ばれているそうです。高野はおすすめです。

また、高野は母の日用のギフトは母の日に届くようにしてくれたり、母の日父の日のギフトをセットでお安く買えたりします。くだものきらいな人はいないので、これは間違いないです。