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" <erickerick...@gmail.com>
An: solr-user@lucene.apache.org
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
<michael.sza...@basis06.ch> 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" <juan.gra...@gmail.com>
> An: solr-user@lucene.apache.org
> 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
> <michael.sza...@basis06.ch>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
>>
>>
>

Reply via email to