[ 
https://issues.apache.org/jira/browse/SOLR-5478?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13867876#comment-13867876
 ] 

Robert Muir commented on SOLR-5478:
-----------------------------------

This is how i do it. I can give you a patch with my code if you want as well. 
But its not perfect:
* ideally this logic really would not be in a response writer at all, thats 
messy.
* currently only works for string fields. really if the id is numeric, we 
should use the NumericDocValues, etc.
* in fact the whole thing is a hack: really solr should use the internal lucene 
docid for distributed search.

{code}
            Set<String> fnames = returnFields.getLuceneFieldNames();
            context.iterator = ids.iterator();

            final boolean onlyID = fnames != null && (fnames.equals(idOnly) || 
fnames.equals(idAndScore));
            if (onlyID) {
                // optimized case: only the ids are needed.
                List<AtomicReaderContext> leaves = 
searcher.getIndexReader().leaves();
                BytesRef ref = new BytesRef();
                for (int i = 0; i < sz; i++) {
                    int id = context.iterator.nextDoc();
                    int subIndex = ReaderUtil.subIndex(id, leaves);
                    AtomicReaderContext ctx = leaves.get(subIndex);
                    ctx.reader().getSortedDocValues(uniqueKeyField).get(id - 
ctx.docBase, ref);
                    Document doc = new Document();
                    doc.add(new StringField(uniqueKeyField, ref.utf8ToString(), 
Field.Store.YES));
                    SolrDocument sdoc = getDoc(doc);
                    if (transformer != null) {
                        transformer.transform(sdoc, id);
                    }
                    codec.writeSolrDocument(sdoc);
                }
            } else {
{code}

> Speed-up distributed search with high rows param or deep paging by 
> transforming docId's to uniqueKey via memory docValues
> -------------------------------------------------------------------------------------------------------------------------
>
>                 Key: SOLR-5478
>                 URL: https://issues.apache.org/jira/browse/SOLR-5478
>             Project: Solr
>          Issue Type: Improvement
>          Components: Response Writers
>    Affects Versions: 4.5
>            Reporter: Manuel Lenormand
>             Fix For: 4.7
>
>         Attachments: SOLR-5478.patch, SOLR-5478.patch
>
>




--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to