Yes, that is the correct behavior. The IntersectingIterator intersects
columns within a row, on a single tablet server. To get the results you
want, you should make sure all the terms for a document are inserted with
the same key / row. In this case, all the doc1 entries should have key1 as
their row.

Billie
On Nov 18, 2015 7:08 AM, "Sven Hodapp" <[email protected]>
wrote:

> Hello together,
>
> Currently I'm using Accumulo 1.7 (currently single a node) with the
> IntersectingIterator.
> The current index schema for the IntersectingIterator looks like this, for
> example:
>
>     key1 : term1 : doc1
>     key1 : term2 : doc1
>     key2 : term3 : doc1
>
> I've noticed that I can't intersect terms which are in distinct key-ranges.
> Is that a correct behavior, or I'm doing something wrong?
>
> Extract of my code (Scala) as example:
>
>     val bs = conn.createBatchScanner(tableName, authorizations,
> numQueryThreads)
>     val terms = List(new Text("term1"), new Text("term2")).toArray
>
>     val ii = new IteratorSetting(priority, name, iteratorClass)
>     IntersectingIterator.setColumnFamilies(ii, terms)
>     bs.addScanIterator(ii)
>
>     bs.setRanges(Collections.singleton(new Range()))  // all ranges
>
>     for (entry <- bs.asScala.take(100)) yield {
>       entry.getKey.getColumnQualifier.toString
>     }
>
> This will yield "doc1" as expected.
>
> But if I'll choose the terms like this:
>
>     // ...
>     val terms = List(new Text("term1"), new Text("term3")).toArray
>     // ...
>
> It will yield "null" but I would expect here also "doc1".
> I've also tried this with setting a list of Range.exact,
> but I'll get also "null".
>
> I'm doing something wrong?
>
> Thank you in advance!
>
> Regards,
> Sven
>
> --
> Sven Hodapp, M.Sc.,
> Fraunhofer Institute for Algorithms and Scientific Computing SCAI,
> Department of Bioinformatics
> Schloss Birlinghoven, 53754 Sankt Augustin, Germany
> [email protected]
> www.scai.fraunhofer.de
>

Reply via email to