Re: how to include result ordinal in response

2014-01-04 Thread Peter Keegan
Thank you both. The DocTransformer solution was very simple:

import java.io.IOException;

import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.transform.DocTransformer;
import org.apache.solr.response.transform.TransformerFactory;

public class PositionAugmenterFactory extends TransformerFactory{

@Override
public DocTransformer create(String field, SolrParams params,
SolrQueryRequest req) {
return new PositionAugmenter( field );
}

class PositionAugmenter extends DocTransformer {
final String name;
int position;

public PositionAugmenter( String display )
{
this.name = display;
this.position = 1;
}
@Override
public String getName() {
return name;
}

@Override
public void transform(SolrDocument doc, int docid) throws
IOException {
doc.setField( name, position++);
}

}
}

@Jack: fl=[docid] is similar to using the uniqueKey, but still hard to
compare visually (for me).

The fields are not returned in the same order as specified in the 'fl'
parameter. Can the order be overridden?

Thanks,
Peter




On Fri, Jan 3, 2014 at 6:58 PM, Jack Krupansky j...@basetechnology.comwrote:

 Or just use the internal document ID: fl=*,[docid]

 Granted, the docID may change if a segment merge occurs and earlier
 documents have been deleted, but it may be sufficient for your purposes.

 -- Jack Krupansky

 -Original Message- From: Upayavira
 Sent: Friday, January 03, 2014 5:58 PM
 To: solr-user@lucene.apache.org
 Subject: Re: how to include result ordinal in response


 On Fri, Jan 3, 2014, at 10:00 PM, Peter Keegan wrote:

 Is there a simple way to output the result number (ordinal) with each
 returned document using the 'fl' parameter? This would be useful when
 visually comparing the results from 2 queries.


 I'm not aware of a simple way.

 If you're competent in Java, this could be a neat new DocTransformer
 component. You'd say:

 fl=*,[position]

 and you'd get a new field in your search results.

 Cruder ways would be to use XSLT to add it to an XML output, or a
 velocity template, but the DocTransformer approach would create
 something that could be of ongoing use.

 Upayavira



how to include result ordinal in response

2014-01-03 Thread Peter Keegan
Is there a simple way to output the result number (ordinal) with each
returned document using the 'fl' parameter? This would be useful when
visually comparing the results from 2 queries.

Thanks,
Peter


Re: how to include result ordinal in response

2014-01-03 Thread Upayavira
On Fri, Jan 3, 2014, at 10:00 PM, Peter Keegan wrote:
 Is there a simple way to output the result number (ordinal) with each
 returned document using the 'fl' parameter? This would be useful when
 visually comparing the results from 2 queries.

I'm not aware of a simple way.

If you're competent in Java, this could be a neat new DocTransformer
component. You'd say:

fl=*,[position]

and you'd get a new field in your search results.

Cruder ways would be to use XSLT to add it to an XML output, or a
velocity template, but the DocTransformer approach would create
something that could be of ongoing use.

Upayavira


Re: how to include result ordinal in response

2014-01-03 Thread Jack Krupansky

Or just use the internal document ID: fl=*,[docid]

Granted, the docID may change if a segment merge occurs and earlier 
documents have been deleted, but it may be sufficient for your purposes.


-- Jack Krupansky

-Original Message- 
From: Upayavira

Sent: Friday, January 03, 2014 5:58 PM
To: solr-user@lucene.apache.org
Subject: Re: how to include result ordinal in response

On Fri, Jan 3, 2014, at 10:00 PM, Peter Keegan wrote:

Is there a simple way to output the result number (ordinal) with each
returned document using the 'fl' parameter? This would be useful when
visually comparing the results from 2 queries.


I'm not aware of a simple way.

If you're competent in Java, this could be a neat new DocTransformer
component. You'd say:

fl=*,[position]

and you'd get a new field in your search results.

Cruder ways would be to use XSLT to add it to an XML output, or a
velocity template, but the DocTransformer approach would create
something that could be of ongoing use.

Upayavira