Vector column on groonga

You can store multiple scalar values in groonga vector column. Basically you can find documents in the official website.

I tried it.

 ❯ groonga -n vector_column                                                                                                                                                                                                                                             [04:15:13]
> table_create Bookmarks TABLE_HASH_KEY ShortText
[[0,1482779729.12516,0.00278282165527344],true]
> column_create Bookmarks tags COLUMN_VECTOR ShortText
[[0,1482779736.44374,0.0134000778198242],true]
> load --table Bookmarks
> [
> {"_key": "http://groonga.org/", "tags": ["groonga","clang"]},
> {"_key": "http://mroonga.org/", "tags": ["mroonga", "mysql", "groonga","clang"]},
> {"_key": "http://ranguba.org/", "tags": ["ruby", "groonga"]}
> ]
[[0,1482779752.21302,80.0812120437622],3]
> table_create Tags TABLE_PAT_KEY ShortText
[[0,1482779852.22091,0.0124678611755371],true]
> column_create Tags bookmark_index COLUMN_INDEX Bookmarks tags
[[0,1482779857.29403,0.0181009769439697],true]
> select Bookmarks --match_columns tags --query mysql --output_columns _key,tags,_score
[[0,1482779866.69317,0.00116205215454102],[[[1],[["_key","ShortText"],["tags","ShortText"],["_score","Int32"]],["http://mroonga.org/",["mroonga","mysql","groonga","clang"],1]]]]
> select Bookmarks --match_columns tags --query groonga --output_columns _key,tags,_score
[[0,1482779911.93359,0.000355958938598633],[[[3],[["_key","ShortText"],["tags","ShortText"],["_score","Int32"]],["http://groonga.org/",["groonga","clang"],1],["http://mroonga.org/",["mroonga","mysql","groonga","clang"],1],["http://ranguba.org/",["ruby","groonga"],1]]]]

When you want to find the records that contains more than words, you can put the words after --query option and use space() as word delimiter and use quote(') to wrap them.

> select Bookmarks --match_columns tags --query groonga,clang --output_columns _key,tags,_score
[[0,1482779921.60562,0.000458002090454102],[[[0],[["_key","ShortText"],["tags","ShortText"],["_score","Int32"]]]]]
> select Bookmarks --match_columns tags --query groonga clang --output_columns _key,tags,_score
[[-63,1482780043.86791,0.000274896621704102,"Syntax error: <clang||>",[["yy_syntax_error","grn_ecmascript.lemon",34]]]]
> select Bookmarks --match_columns tags --query 'groonga clang' --output_columns _key,tags,_score
[[0,1482780164.98614,0.000456094741821289],[[[2],[["_key","ShortText"],["tags","ShortText"],["_score","Int32"]],["http://groonga.org/",["groonga","clang"],2],["http://mroonga.org/",["mroonga","mysql","groonga","clang"],2]]]]
> select Bookmarks --match_columns tags --query "groonga clang" --output_columns _key,tags,_score
[[0,1482780239.72206,5.69820404052734e-05],[[[2],[["_key","ShortText"],["tags","ShortText"],["_score","Int32"]],["http://groonga.org/",["groonga","clang"],2],["http://mroonga.org/",["mroonga","mysql","groonga","clang"],2]]]]
> select Bookmarks --match_columns tags --query "clang groonga" --output_columns _key,tags,_score
[[0,1482780249.60271,0.000402927398681641],[[[2],[["_key","ShortText"],["tags","ShortText"],["_score","Int32"]],["http://groonga.org/",["groonga","clang"],2],["http://mroonga.org/",["mroonga","mysql","groonga","clang"],2]]]]
> select Bookmarks --match_columns tags --query "clang groonga ruby" --output_columns _key,tags,_score
[[0,1482780266.57816,0.0004730224609375],[[[0],[["_key","ShortText"],["tags","ShortText"],["_score","Int32"]]]]]
> select Bookmarks --match_columns tags --query "groonga ruby" --output_columns _key,tags,_score
[[0,1482780279.59313,0.000370979309082031],[[[1],[["_key","ShortText"],["tags","ShortText"],["_score","Int32"]],["http://ranguba.org/",["ruby","groonga"],2]]]]
>