There should only be one document matching that query (provided "Entrez ID" is your unique key field name). Using a space in a field name is perhaps the problem. It's way best practice that fields have only [a-zA-z0-9_] in them. Maybe that space isn't the issue though, but try &debugQuery=true and see how the query parsed to see for sure.
Erik On Feb 2, 2012, at 10:22 , Yuhao wrote: > Erik, > > Thanks for the slides. I followed the example on pages 24-25 (maybe too > rigidly). The first line is giving me trouble: > > #set($doc= $response.results.get(0)) > > This will always get the first document in the search results, which happens > to be the first document I indexed. So, no matter which record I click on, > I'm always taken to the details of that first record. I can't get to any > other record even though I pass their ID to the new handler. So, my question > is, is the line above supposed to give me the record I passed the ID for, or > is it just an example to get "some" record? > > Here are the details of my implementation: > (I realize I've got a space in the ID field "Entrez ID". However, that > doesn't seem to be the problem since it was able to get the first record) > > I defined a SearchHandler named "/details". Example url: > http://localhost:920/solr/details?id=7391 > > > schema.xml: > ================================================ > <requestHandler name="/details" class="solr.SearchHandler"> > <lst name="defaults"> > <!-- VelocityResponseWriter settings --> > <str name="wt">velocity</str> > > <str name="v.template">details</str> > <str name="v.template.header">__this is configured in solrconfig.xml, > str name="v.template.header"__</str> > <str name="v.layout">layout</str> > <str name="title">Details</str> > > <str name="q">{!raw f="Entrez ID" v=$id}</str> > > <str name="facet">on</str> > <str name="facet.limit">10</str> > <str name="facet.sort">count</str> > <str name="facet.field">Gene_Ontology_Associations</str> > <str name="facet.field">Mouse_Phenotype_Associations</str> > <str name="facet.field">BKL_Diagnostic_Marker_Associations</str> > <str name="facet.field">BKL_Molecular_Mechanism_Associations</str> > <str name="facet.field">BKL_Therapeutic_Target_Associations</str> > <str name="facet.field">BKL_Negative_Correlation_Associations</str> > <str name="facet.field">GAD_Positive_Disease_Associations</str> > <str name="facet.field">GAD_Negative_Disease_Associations</str> > <str name="facet.field">HuGENet_GeneProspector_Associations</str> > <str name="facet.field">Expression_Specificity_according_to_GNF</str> > <str name="facet.field">OMIM_Clinical_Synopses_Matches</str> > <str name="facet.field">OMIM_Full_Text_Matches</str> > <str name="facet.mincount">1</str> > > <!-- Highlighting defaults --> > <str name="hl">on</str> > <str name="hl.fl">text features name</str> > <str name="f.name.hl.fragsize">0</str> > <str name="f.name.hl.alternateField">name</str> > </lst> > <arr name="last-components"> > <str>spellcheck</str> > </arr> > <!-- > <str name="url-scheme">httpx</str> > --> > </requestHandler> > > > > details.vm > ============================================= > #set($doc= $response.results.get(0)) > <span><a href="$doc.getFieldValue('Entrez ID')">$doc.getFieldValue('Entrez > ID')</a></span> > <table> > #foreach($fieldname in $doc.fieldNames) > <tr> > <td>$fieldname:</td> > <td> > #foreach($value in $doc.getFieldValues($fieldname)) > $esc.html($value) > #end > </td> > </tr> > #end > </table> > > > > > ________________________________ > From: Erik Hatcher <erik.hatc...@gmail.com> > To: solr-user@lucene.apache.org > Sent: Wednesday, February 1, 2012 8:26 PM > Subject: Re: Help: Creating another handler and template to display document > attributes > > I'm not following exactly what you're after here in detail, but I think this > will help: > > <http://www.slideshare.net/erikhatcher/rapid-prototyping-with-solr-5675936> > > See slides 24 and 25. Note the use of $id in the /document request handler > definition using parameter substitution, a really cool technique. > > Erik > > On Feb 1, 2012, at 17:17 , Yuhao wrote: > >> Like the title says, I want to create a "page" to display a bunch of >> document attributes. I accomplished this by creating a new handler and a >> template for it. However, I'm having trouble pulling up the details of the >> document in the new handler. Here's my code. Is this a good way to do it? >> I first pass the doc ID to the handler, which I then use to pull up the >> details. >> >> >> ********************************* BEGIN ******************************* >> #set($id = $params.get("id")) >> ## Note: id is the same thing as "Entrez ID" >> >> >> #foreach ($doc in $response.results) >> #if ($doc.getFieldValue('Entrez ID') == $id) ## Only show attrs for the >> current doc >> #foreach ($field_name in $doc.getFieldNames()) >> <b>$field_name</b>: $doc.getFieldValue($field_name)<br/><br/> >> #end >> #end >> #end >> ********************************* END ******************************* >> >> >> This approach requires the document to be in the search results. The way I >> pass the ID to the handler right now, is to simply add "id=$id" to the URL, >> without the rest of the querystring that was used to conceive the current >> query. I need to get the rest of the querystring and pass them along to the >> handler to ensure the document is in the search result. However, I don't >> know of a good way. I tried the following code: >> >> #set($querystring = "") >> #foreach ($param in $request.params.getParameterNamesIterator()) >> #set($querystring = $querystring + >> "&$param=$esc.url($request.params.get($param))" ) >> #end >> >> >> Unfortunately, the above code returns a lot of unnecessary params that are >> not part of the querystring, and it fails to put the document in the search >> result. Is there a better way to get the URL querystring (and just the >> querystring, not other environment parameters)?