Sure, just use the Luke handler. See LukeRequest and LukeResponse in the API documentation.
Best Erick On Wed, Aug 31, 2011 at 2:23 AM, Michael Szalay <[email protected]> wrote: > You are right, they are not stored... > But I is possible to see them, as the schema browser in the admin application > does? > > Regards Michael > > -- > Michael Szalay > Senior Software Engineer > > basis06 AG, Birkenweg 61, CH-3013 Bern - Fon +41 31 311 32 22 > http://www.basis06.ch - source of smart business > > ----- Ursprüngliche Mail ----- > Von: "Erick Erickson" <[email protected]> > An: [email protected] > Gesendet: Dienstag, 30. August 2011 16:31:05 > Betreff: Re: How to list all dynamic fields of a document using solrj? > > This works for me, admittedly with the 3.3 code base: > > Hmmm, did you *store* the dynamic fields? only stored fields are returned.... > > CommonsHttpSolrServer server = new > CommonsHttpSolrServer("http://localhost:8983/solr"); > SolrQuery query = new SolrQuery(); > query.setQuery("*"); > query.setRows(1000); > QueryResponse qr = server.query(query, SolrRequest.METHOD.POST); > > for (Object obj : qr.getHeader()) log(obj.toString()); > > > SolrDocumentList sdl = qr.getResults(); > for (SolrDocument d : sdl) { > // Print out all the fields in the record. > for (String key : d.getFieldNames()) { > log(key + " : " + d.get(key).toString()); > } > // try a specific dynamic field > Object val = d.getFieldValue("e1_t"); > if (val != null) > log("getting specific value: " + val.toString()); > } > > > On Tue, Aug 30, 2011 at 2:11 AM, Michael Szalay > <[email protected]> wrote: >> Hi Juan >> >> I tried with the following code first: >> >> final SolrQuery allDocumentsQuery = new SolrQuery(); >> allDocumentsQuery.setQuery("id:" + myId); >> allDocumentsQuery.setFields("*"); >> allDocumentsQuery.setRows(1); >> QueryResponse response = solr.query(allDocumentsQuery, METHOD.POST); >> >> >> With this, only non-dynamic fields are returned. >> Then I wrote the following helper method: >> >> private Set<String> getDynamicFields() throws SolrServerException, >> IOException { >> final LukeRequest luke = new LukeRequest(); >> luke.setShowSchema(false); >> final LukeResponse process = luke.process(solr); >> final Map<String, FieldInfo> fieldInfo = process.getFieldInfo(); >> final Set<String> dynamicFields = new HashSet<String>(); >> for (final String key : fieldInfo.keySet()) { >> if (key.endsWith("_string") || (key.endsWith("_dateTime"))) { >> dynamicFields.add(key); >> } >> } >> return dynamicFields; >> } >> >> where as _string and _dateTime are the suffixes of my dynamic fields. >> This one returns really all stored fields of the document: >> >> final Set<String> dynamicFields = getDynamicFields(); >> final SolrQuery allDocumentsQuery = new SolrQuery(); >> allDocumentsQuery.setQuery("uri:" + myId); >> allDocumentsQuery.setFields("*"); >> for (final String df : dynamicFields) { >> allDocumentsQuery.addField(df); >> } >> >> allDocumentsQuery.setRows(1); >> QueryResponse response = solr.query(allDocumentsQuery, METHOD.POST); >> >> Is there a more elegant way to do this? We are using solrj 3.1.0 and solr >> 3.1.0. >> >> Regards >> Michael >> -- >> Michael Szalay >> Senior Software Engineer >> >> basis06 AG, Birkenweg 61, CH-3013 Bern - Fon +41 31 311 32 22 >> http://www.basis06.ch - source of smart business >> >> ----- Ursprüngliche Mail ----- >> Von: "Juan Grande" <[email protected]> >> An: [email protected] >> Gesendet: Montag, 29. August 2011 18:19:05 >> Betreff: Re: How to list all dynamic fields of a document using solrj? >> >> Hi Michael, >> >> It's supposed to work. Can we see a snippet of the code you're using to >> retrieve the fields? >> >> *Juan* >> >> >> >> On Mon, Aug 29, 2011 at 8:33 AM, Michael Szalay >> <[email protected]>wrote: >> >>> Hi all >>> >>> how can I list all dynamic fields and their values of a document using >>> solrj? >>> The dynamic fields are never returned when I use setFields(*). >>> >>> Thanks >>> >>> Michael >>> >>> -- >>> Michael Szalay >>> Senior Software Engineer >>> >>> basis06 AG, Birkenweg 61, CH-3013 Bern - Fon +41 31 311 32 22 >>> http://www.basis06.ch - source of smart business >>> >>> >> >
