org.apache.solr.client.solrj.io.stream

## Class HashJoinStream

- java.lang.Object
- - org.apache.solr.client.solrj.io.stream.TupleStream
  - - org.apache.solr.client.solrj.io.stream.HashJoinStream

- All Implemented Interfaces:
    Closeable, Serializable, AutoCloseable, Expressible
  Direct Known Subclasses:
    OuterHashJoinStream

      public class HashJoinStream
      extends TupleStream
      implements Expressible

  Takes two streams (fullStream and hashStream) and joins them similar to an InnerJoinStream. The difference in a HashJoinStream is that the tuples in the hashStream will all be read and hashed when this stream is opened. This provides a few optimizations iff the hashStream has a relatively small number of documents. You are expected to provide a set of fields for which the hash will be calculated from. If a tuple does not contain a value (ie, null) for one of the fields the hash is being computed on then that tuple will not be considered a match to anything. Ie, all fields which are part of the hash must have a non-null value.
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected TupleStream` | `fullStream`
    `protected HashMap<Integer,List<Tuple>>` | `hashedTuples`
    `protected TupleStream` | `hashStream`
    `protected List<String>` | `leftHashOn`
    `protected List<String>` | `rightHashOn`
    `protected Integer` | `workingFullHash`
    `protected Tuple` | `workingFullTuple`
    `protected int` | `workngHashSetIdx`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HashJoinStream(StreamExpression expression, StreamFactory factory)`
    `HashJoinStream(TupleStream fullStream, TupleStream hashStream, List<String> hashOn)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Integer` | `calculateHash(Tuple tuple, List<String> hashOn)`
    `List<TupleStream>` | `children()`
    `void` | `close()`
    `int` | `getCost()`
    `StreamComparator` | `getStreamSort()`
    `void` | `open()`
    `Tuple` | `read()`
    `void` | `setStreamContext(StreamContext context)`
    `Explanation` | `toExplanation(StreamFactory factory)` Returns an explanation about the stream object
    `StreamExpression` | `toExpression(StreamFactory factory)`

    - ### Methods inherited from class org.apache.solr.client.solrj.io.stream.TupleStream

      `getStreamNodeId, writeStreamClose, writeStreamOpen`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### hashStream

          protected TupleStream hashStream

    - #### fullStream

          protected TupleStream fullStream

    - #### leftHashOn

          protected List<String> leftHashOn

    - #### rightHashOn

          protected List<String> rightHashOn

    - #### hashedTuples

          protected HashMap<Integer,List<Tuple>> hashedTuples

    - #### workingFullTuple

          protected Tuple workingFullTuple

    - #### workingFullHash

          protected Integer workingFullHash

    - #### workngHashSetIdx

          protected int workngHashSetIdx

  - ### Constructor Detail

    - #### HashJoinStream

          public HashJoinStream(TupleStream fullStream,
                                TupleStream hashStream,
                                List<String> hashOn)
                         throws IOException

      Throws:
        `IOException`

    - #### HashJoinStream

          public HashJoinStream(StreamExpression expression,
                                StreamFactory factory)
                         throws IOException

      Throws:
        `IOException`

  - ### Method Detail

    - #### toExpression

          public StreamExpression toExpression(StreamFactory factory)
                                        throws IOException

      Specified by:
        `toExpression` in interface `Expressible`
      Throws:
        `IOException`

    - #### toExplanation

          public Explanation toExplanation(StreamFactory factory)
                                    throws IOException

      Description copied from interface: `Expressible`
      Returns an explanation about the stream object
      Specified by:
        `toExplanation` in interface `Expressible`
      Specified by:
        `toExplanation` in class `TupleStream`
      Parameters:
        `factory` - Stream factory for this, contains information about the function name
      Returns:
        Explanation about this stream object containing explanations of any child stream objects
      Throws:
        `IOException` - throw on any error

    - #### setStreamContext

          public void setStreamContext(StreamContext context)

      Specified by:
        `setStreamContext` in class `TupleStream`

    - #### children

          public List<TupleStream> children()

      Specified by:
        `children` in class `TupleStream`

    - #### open

          public void open()
                    throws IOException

      Specified by:
        `open` in class `TupleStream`
      Throws:
        `IOException`

    - #### calculateHash

          protected Integer calculateHash(Tuple tuple,
                                          List<String> hashOn)

    - #### close

          public void close()
                     throws IOException

      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Specified by:
        `close` in class `TupleStream`
      Throws:
        `IOException`

    - #### read

          public Tuple read()
                     throws IOException

      Specified by:
        `read` in class `TupleStream`
      Throws:
        `IOException`

    - #### getStreamSort

          public StreamComparator getStreamSort()

      Specified by:
        `getStreamSort` in class `TupleStream`

    - #### getCost

          public int getCost()

      Overrides:
        `getCost` in class `TupleStream`

Copyright © 2000-2016 Apache Software Foundation. All Rights Reserved.