[ http://issues.apache.org/jira/browse/SOLR-52?page=all ]

Mike Klaas updated SOLR-52:
---------------------------

    Attachment: lazyfields_patch.diff

updated version of patch.  Addresses some of Hoss' (minor) comments.  Also, the 
.doc() method of SolrIndexSearcher will added the unique key field 
unconditionally if it is present in the schema.  IT is used randomly in several 
places and including checks for it in other places decreases readability. 

> Lazy Field loading
> ------------------
>
>                 Key: SOLR-52
>                 URL: http://issues.apache.org/jira/browse/SOLR-52
>             Project: Solr
>          Issue Type: Improvement
>          Components: search
>            Reporter: Mike Klaas
>         Assigned To: Mike Klaas
>            Priority: Minor
>         Attachments: lazyfields_patch.diff, lazyfields_patch.diff
>
>
> Add lazy field loading to solr.
> Currently solr reads all stored fields and filters the undesired fields based 
> on the field list.  This is usually not a performance concern, but when using 
> solr to store large numbers of fields, or just one large field (doc contents, 
> eg. for highlighting), it is perceptible.
> Now, there is a concern with the doc cache of SolrIndexSearcher, which 
> assumes it has the whole document in the cache.  To maintain this invariant, 
> it is still the case that all the fields in a document are loaded in a 
> searcher.doc(i) call.  However, if a field set is given to teh method, only 
> the given fields are loaded directly, while the rest are loaded lazily.
> Some concerns about lazy field loading
>   1. Lazy field are only valid while the IndexReader is open.  I believe this 
> is fine since the IndexReader is kept alive by the SolrIndexSearcher, so all 
> docs in the cache have the reader available.  
>   2. It is slower to read a field lazily and retrieve its value later than 
> retrieve it directory to begin with (though I don't know how much--depends on 
> i/o factors).  We certainly don't want this to be the common case.  I added 
> an optional call which accumulates all the field likely to be used in the 
> request (highlighting, reponse writing), and populates the IndexSearcher 
> cache a priori.  This has the added advantage of concentrating doc retrieval 
> in a single place, which is nice from a performance testing perspective.
>  3. LazyFields are incompatible with the sundry Field declarations scattered 
> about Solr.  I believe I've changed all the necessary locations to Fieldable.
> Comments appreciated

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to