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まで使う必要が無…
0 件のコメント:
コメントを投稿