Any ideas on this? Should indexing for sub-objects in an array with the same field names in a JSON document work?
On Sun, Oct 30, 2011 at 6:56 AM, Elias Levy <fearsome.lucid...@gmail.com>wrote: > On Sat, Oct 29, 2011 at 9:59 PM, Elias Levy > <fearsome.lucid...@gmail.com>wrote: > >> I am wondering if Riak search can index intermediate nested fields. When >> indexing json data through the KV precommit hook, the underscore is >> understood in the schema as indicating nesting. Thus, foo_bar will index >> the value "bah" of field "bar" in the json document { "foo" : { "bar" : >> "bah" } }. >> >> What I'd like to know is if it can instead index the key "bar" in the >> same json document. In my current use case I want to be able to find >> documents with certain values for "bar" for these types of documents. >> >> Can this be done by simply indexing the field "foo"? Does search know to >> index all keys in "foo" if foo is a hash, or all its values if it is an >> array? >> > > My testing on 1.0.0 shows that this appears not to work. Looking at the > source for the search kv extractor gives the impression that a workaround > would be to instead store { "foo" : [ { "x": "bar", "y": "bah"}, { "x": > "woo", "y": "zoo" }, ... ]} and index "foo_z" to be able to search for > "bar" and "woo". I.e. it appears the extractor will index each subdocument > in the array. > > At least that is what json_text() function implies with the tests: > > {<<" > {\"menu\": { > \"id\": \"file\", > \"value\": \"File\", > \"popup\": { > \"menuitem\": [ > {\"value\": \"New\", \"onclick\": \"CreateNewDoc()\"}, > {\"value\": \"Open\", \"onclick\": \"OpenDoc()\"}, > {\"value\": \"Close\", \"onclick\": \"CloseDoc()\"} > ] > } > }}">>, > [{<<"menu_id">>, <<"file">>}, > {<<"menu_value">>, <<"File">>}, > {<<"menu_popup_menuitem_value">>, <<"New">>}, > {<<"menu_popup_menuitem_onclick">>, <<"CreateNewDoc()">>}, > {<<"menu_popup_menuitem_value">>, <<"Open">>}, > {<<"menu_popup_menuitem_onclick">>, <<"OpenDoc()">>}, > {<<"menu_popup_menuitem_value">>, <<"Close">>}, > {<<"menu_popup_menuitem_onclick">>, <<"CloseDoc()">>}]}, > %% From > http://www.ibm.com/developerworks/library/x-atom2json.html > > >> The implication of the above code is that you can search for > menu_popup_menuitem_value:New or menu_popup_menuitem_value:Open and find > the doc. But my testing shows this not to work. If any of the documents > in the array have the same fields, those fields will not be indexed. > > E.g. if I set my schema to index foo_bar and insert {"foo": [ { "bar" : > "baz" }, {"xxx":"yyy"} ] }, I can search for foo_bar:baz and receive a > match. If I instead insert '{"foo": [ { "bar" : "baz" }, {"bar":"yyy"} ] > }' and search for foo_bar:baz I receive no match. > > Is this expected behavior or a bug? > > Elias > > >
_______________________________________________ riak-users mailing list riak-users@lists.basho.com http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com