retrieve lucene "doc id"

2007-12-16 Thread Ben Incani
how do I retrieve the lucene "doc id" in a query?

-Ben


Re: retrieve lucene "doc id"

2007-12-16 Thread Yonik Seeley
On Dec 16, 2007 11:40 PM, Ben Incani <[EMAIL PROTECTED]> wrote:
> how do I retrieve the lucene "doc id" in a query?

Currently that's not doable... if it was though, it would be a
slightly dangerous feature since internal ids are transient.
Can you explain a little more about what you are trying to do?

-Yonik


RE: retrieve lucene "doc id"

2007-12-16 Thread Ben Incani
> -Original Message-
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf 
> Of Yonik Seeley
> Sent: Monday, 17 December 2007 4:44 PM
> To: solr-user@lucene.apache.org
> Subject: Re: retrieve lucene "doc id"
> 
> On Dec 16, 2007 11:40 PM, Ben Incani 
> <[EMAIL PROTECTED]> wrote:
> > how do I retrieve the lucene "doc id" in a query?
> 
> Currently that's not doable... if it was though, it would be 
> a slightly dangerous feature since internal ids are transient.
> Can you explain a little more about what you are trying to do?
> 
> -Yonik
> 

Hi Yonik,

I have converted to using the Solr search interface and I am trying to
retrieve documents from a list of search results (where previously I had
used the doc id directly from the lucene query results) and the solr id
I have got currently indexed is unfortunately configured not be unique!

I do realise that lucene internal ids are transient, but for a read-only
requests (that are not cached) should be ok.  

i have hacked org.apache.solr.request.XMLWriter.writeDoc to do a
writeInt("docId", docId).

 code snippet 

SolrServer server = new CommonsHttpSolrServer(solrURL);
Map params = new HashMap();
params.put("q", searchQuery);
params.put("rows", "20");

MapSolrParams solrParams = new MapSolrParams(params);   
QueryResponse response = server.query(solrParams);

SolrDocumentList docs = response.getResults();
ArrayList hitsList = new ArrayList();

for (int i = 0; i < docs.getNumFound(); i++) {
HashMap resultMap = new HashMap();
SolrDocument doc = (SolrDocument)docs.get(i);
resultMap.put("id", doc.getFieldValue("docId"));
for(int j=0; j