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

Christine Poerschke commented on SOLR-12697:
--------------------------------------------

{quote}
{code:java}
public class DocValuesFieldValueFeatureScorer extends FieldValueFeatureScorer {
    ...
        } catch (IOException e) {
            // this is fine for fields that do not have docValues, we handle 
that case with super.score()
            floatDocValues = null;
        }
    ...
{code}
{quote}
Thanks [~TomGilke] and Tobi for sharing your approach!

Have you considered for the caller of the constructor to "look ahead" and 
construct {{FieldValueFeatureScorer}} or {{DocValuesFieldValueFeatureScorer}} 
depending on what is seen? It could provide a way to maintain (for now) 
existing behaviour for the {{docValues="true" stored="true"}} case and to avoid 
IOException swallowing?

I'm thinking something like this structurally {color:#FF0000}but haven't at all 
considered what the DocValuesFieldValueFeatureScorer implementation would look 
like ...{color}
{code:java}
   public class FieldValueFeatureWeight extends FeatureWeight {
 
+    private final SchemaField schemaField;
+
     public FieldValueFeatureWeight(IndexSearcher searcher,
         SolrQueryRequest request, Query originalQuery, Map<String,String[]> 
efi) {
       super(FieldValueFeature.this, searcher, request, originalQuery, efi);
+      if (searcher instanceof SolrIndexSearcher) {
+        schemaField = 
((SolrIndexSearcher)searcher).getSchema().getFieldOrNull(field);
+      } else {
+        schemaField = null;
+      }
     }
 
     @Override
     public FeatureScorer scorer(LeafReaderContext context) throws IOException {
+    /*
+      if (schemaField != null && !schemaField.stored() && 
schemaField.hasDocValues()) {
+          return new DocValuesFieldValueFeatureScorer(this, context,
+               DocIdSetIterator.all(DocIdSetIterator.NO_MORE_DOCS));
+      }
+    */
       return new FieldValueFeatureScorer(this, context,
           DocIdSetIterator.all(DocIdSetIterator.NO_MORE_DOCS));
     }
{code}

> pure DocValues support for FieldValueFeature
> --------------------------------------------
>
>                 Key: SOLR-12697
>                 URL: https://issues.apache.org/jira/browse/SOLR-12697
>             Project: Solr
>          Issue Type: Sub-task
>          Components: contrib - LTR
>            Reporter: Stanislav Livotov
>            Priority: Major
>         Attachments: SOLR-12697.patch, SOLR-12697.patch, SOLR-12697.patch, 
> SOLR-12697.patch, SOLR-12697.patch
>
>
> [~slivotov] wrote in SOLR-12688:
> bq. ... FieldValueFeature doesn't support pure DocValues fields (Stored 
> false). Please also note that for fields which are both stored and DocValues 
> it is working not optimal because it is extracting just one field from the 
> stored document. DocValues are obviously faster for such usecases. ...
> (Please see SOLR-12688 description for overall context and analysis results.)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to