On Wed, Jan 19, 2011 at 11:05:28AM -0800, Andi Vajda wrote: > > On Wed, 19 Jan 2011, Eric Hall wrote: > > > I'd like to store some index metadata using > > > > IndexWriter.commit(Map<String,String> commitUserData) > > > > I've set up a python dict with string to string mappings, > >but if I use that I get an InvalidArgsError. Is there a different > >python type to use in this call? > > Yes, use a Java HashMap for which there is a Python wrapper in PyLucene: > > >>> import lucene > >>> lucene.initVM() > <jcc.JCCEnv object at 0x10040a0d8> > >>> a = lucene.HashMap().of_(lucene.String, lucene.String) > >>> a.put('foo', 'bar') > >>> a > <HashMap: {foo=bar}> > > The use of the of_() method is optional but it conveys the <String, String> > part and helps with enforcing the generic parameter and return type for the > map's methods. > > If you'd rather use a Python dict directly, see the example in PyLucene's > python/collections.py module where a Python set is wrapped by a class > called JavaSet. The same could be implemented for the java.util.Map > interface.
Tha HashMap()... method works fine for storing the metadata, and luke shows that its there. Of course getting the metadata back for later comparison/display is also useful, and seemed like it would be straightforward.... Naturally its not working using: indexMetaDataHashMap = reader.getCommitUserData() I get an empty hashmap back from the above. I also tried using: indexCommit = reader.getIndexCommit indexMetaDataHashMap = indexCommit.getUserData() with the same result (empty hashmap). Is there a different way to do this? Thanks again, -eric