You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Shai Erera (JIRA)" <ji...@apache.org> on 2014/05/21 17:06:38 UTC

[jira] [Commented] (LUCENE-5683) Improve SegmentReader.getXXXDocValues

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

Shai Erera commented on LUCENE-5683:
------------------------------------

I implemented it, many tests fail in CheckIndex on ClassCastException. So this is the current code:

{code}
FieldInfo fi = getDVField(field, DocValuesType.BINARY);
if (fi == null) {
  return null;
}

Map<String,Object> dvFields = docValuesLocal.get();
BinaryDocValues dvs = (BinaryDocValues) dvFields.get(field);
if (dvs == null) {
  // initialize
  ...
}
{code}

And I changed it so that the FieldInfo part is inside the {{if}} (lazily initialize). The reason for the ClassCastException is that if you previously asked for a NUMERIC field w/ same name, it got into the map, therefore the code happily tries to case it to a NumericDocValues, or BinaryDocValues and hits the exception.

So I'm not sure this optimization is right .. but also that it's worth complicating the code w/ e.g. instanceof checks?

> Improve SegmentReader.getXXXDocValues
> -------------------------------------
>
>                 Key: LUCENE-5683
>                 URL: https://issues.apache.org/jira/browse/LUCENE-5683
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Shai Erera
>            Assignee: Shai Erera
>
> Today we do two hash lookups, where in most cases a single one is enough. E.g. SR.getNumericDocValues initializes the FieldInfo (first lookup in FieldInfos), however if that field was already initialized, we can simply check dvFields.get(). This can be improved in all getXXXDocValues as well as getDocsWithField.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

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