2018年9月5日水曜日

groonga-httpdで公開用全文検索WebAPI突貫工事

今回は急に細かい小さい話です…

 groongaには、groonga-httpd という nginx と融合したプログラムがあり、 デフォルトではhttpでフルアクセスで管理からできるようになっていますが、 検索部分だけを外出しするのは簡単です。

 /etc/groonga/httpd/groonga-httpd.conf


@@ -51,18 +51,37 @@
   # You must specify base path on memory file system for performance.
   # groonga_cache_base_path /dev/shm/groonga-httpd-cache;

+  server_tokens off;
+
+  #検索部分だけ公開するエントリ
+  server {
+    listen 50054;
+    server_name _;
+
+    # Only select command
+    location / {
+      if ($arg_q = "") {
+        return 404;
+      }
+
+      add_header Access-Control-Allow-Origin *;
+      proxy_pass http://127.0.0.1:10041/d/select?table=Item&match_columns=Terms.texts&limit=100&output_columns=_key,brand,iname,img&sort_keys=-_score&query=$arg_q;
+    }
+  }
+
+  #ここから元のエントリ(非公開ポート)
   server {
     listen 10041;
-    server_name localhost;
+    server_name localhost 127.0.0.1;

     location /d/ {
       groonga on;
....

という風にして「?q=[検索クエリ]」のURIオプションを受け入れるようにできます。

嵌ったのは、proxy_passに変数が入ってると、「localhost」の名前解決が上手く行かないので直接IPアドレスを使わなければいけない点だけでした。(nginxの何か固有の仕様?)

というわけで、とりあえず

「画像で旅する」

に全文検索機能を付けてみたメモでした。
え、mroonga? 出力時に必要な項目も一緒に入れてしまったらMySQLまで使う必要が無…

2018年7月23日月曜日

画像で旅する『あの流域』

いずれ、データベースに取り込まれるような一般的な機能になりそうな新技術を探って色々実践している日々です。

ニューラルネットワークや、その中間層を特徴量ベクトルとして抜き出して扱う場合に現在のMySQLでは上手く扱えないのですが、そういうものが人間のデータ閲覧インターフェースとして一般化する場合には、データベースもそういったものを効率的に扱えないといけません。

その、人間とデータの新しい接点を模索していくサービスとして、

画像で旅する https://trip.deqwas.net

というサイトを昨年12月から立ち上げています。

しかし、掲載しているものは、他の目的(PASHALY)でネットから自動収集したものや、偶々入手できるデータフィードをかき集めて表示してきましたが、どうも内容が全体として偏ったり、怪しくなったりしてしまって…

 怪しくなく、実用的にして、
「実験としての意義も高めていきたい!」
ことと、なにより、
「本人が買い物に使う気にならない。」(ぉ)
ということが問題でしたが、苦節半年以上、遂に!!!

許可とデータを頂いて、あのサイトの商品を掲載できるようになりました!

そして、先程データを入れ替えました。

量が多いのでまだ4分の1程度ですが、絶賛処理中で来週には出す予定のものは全部出せると思います。(その後、元のデータで需要があったものも順次復活させる予定です)

お楽しみに!
というか楽しみだ。

2018年3月19日月曜日

MANABIYA でお話する資料

今週末、MANABIYA というイベントでお話させてもらう予定です。話したいことを筋道立てて並べたら結構濃くなってしまったので、とりあえず事前に公開しておきます。タイトルは『AI系技術の一般化でデータベースに求められること』 です。


『AI』という言葉はAI系以外の人にとってとても曖昧で、具体的モノづくりの現場で出てくると困ってしまうわけですが、ちゃんと整理して取り扱い、適切な道具と組み合わせたら面白くなるのではないか。という話(のつもり)です。
内容が多いので、とりあえず話すことは全部、後から読んでも解るように読み物として作っていたら、逆に これを読めば当日来なくても大丈夫になってしまったかも知れないです。 :-)
話したいことや商談などありましたら、登壇当日は会場のどこかに居ると思いますので。