lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (SOLR-8858) SolrIndexSearcher#doc() Completely Ignores Field Filters Unless Lazy Field Loading is Enabled
Date Tue, 05 Jul 2016 05:58:11 GMT

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

ASF GitHub Bot commented on SOLR-8858:
--------------------------------------

Github user maedhroz commented on a diff in the pull request:

    https://github.com/apache/lucene-solr/pull/47#discussion_r69510618
  
    --- Diff: solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java ---
    @@ -766,16 +766,29 @@ public Document doc(int i, Set<String> fields) throws IOException
{
         }
     
         final DirectoryReader reader = getIndexReader();
    -    if (!enableLazyFieldLoading || fields == null) {
    -      d = reader.document(i);
    +    boolean containsAllFields = true;
    +    
    +    if (fields != null) {
    +      if (enableLazyFieldLoading) {
    +        final SetNonLazyFieldSelector visitor = new SetNonLazyFieldSelector(fields, reader,
i);
    +        reader.document(i, visitor);
    +        d = visitor.doc;
    +      } else {
    +        d = reader.document(i, fields);
    +        containsAllFields = false;
    +      }
         } else {
    -      final SetNonLazyFieldSelector visitor = new SetNonLazyFieldSelector(fields, reader,
i);
    -      reader.document(i, visitor);
    -      d = visitor.doc;
    +      d = reader.document(i);
         }
     
         if (documentCache != null) {
    -      documentCache.put(i, d);
    +      // Only cache the already retrieved document if it is complete... 
    +      if (containsAllFields) {
    +        documentCache.put(i, d);
    +      } else {
    +        // ...and retrieve a complete document for caching otherwise.
    +        documentCache.put(i, reader.document(i));
    +      }
    --- End diff --
    
    @shalinmangar I've made a pass at restoring the previous caching behavior (with some comments
around the rationale). It feels like we might have a complete solution at this point.


> SolrIndexSearcher#doc() Completely Ignores Field Filters Unless Lazy Field Loading is
Enabled
> ---------------------------------------------------------------------------------------------
>
>                 Key: SOLR-8858
>                 URL: https://issues.apache.org/jira/browse/SOLR-8858
>             Project: Solr
>          Issue Type: Bug
>    Affects Versions: 4.6, 4.10, 5.5
>            Reporter: Caleb Rackliffe
>              Labels: easyfix
>
> If {{enableLazyFieldLoading=false}}, a perfectly valid fields filter will be ignored,
and we'll create a {{DocumentStoredFieldVisitor}} without it.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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


Mime
View raw message