lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael McCandless (JIRA)" <>
Subject [jira] Commented: (LUCENE-2324) Per thread DocumentsWriters that write their own private segments
Date Mon, 15 Mar 2010 17:53:28 GMT


Michael McCandless commented on LUCENE-2324:

bq. Hmm I think we'd need a separate hash. Otherwise you have to subclass PostingList for
the different cases (freq. vs. non-frequent terms) and do instanceof checks? Or with the parallel
arrays idea maybe we could encode more information in the dense ID? E.g. use one bit to indicate
if that term occurred more than once.

Or 2 sets of parallel arrays (one for the singletons).... or, something.

bq. So in a 32Bit JVM we would safe 4 bytes (pointer) + 8 bytes (header) - 4 bytes (ID) =
8 bytes. For fields with tons of unique terms that might be worth it?

And also the GC cost.

But it seems like specializing singleton fields will be the bigger win.

bq. I was wondering if it makes sense to make these kinds of experiments (pooling vs. non-pooling)
with the flex code?

Last I tested (a while back now) indexing perf was the same -- need to
test again w/ recent changes (eg terms index is switching to packed
ints).  For pooling vs not I'd just do the experiment on trunk?

And most of this change (changing how postings data is buffered in
RAM) is "above" flex I expect.

But if for some reason you need to start changing index postings
format then you should probably do that on flex.

> Per thread DocumentsWriters that write their own private segments
> -----------------------------------------------------------------
>                 Key: LUCENE-2324
>                 URL:
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: Index
>            Reporter: Michael Busch
>            Assignee: Michael Busch
>            Priority: Minor
>             Fix For: 3.1
> See LUCENE-2293 for motivation and more details.
> I'm copying here Mike's summary he posted on 2293:
> Change the approach for how we buffer in RAM to a more isolated
> approach, whereby IW has N fully independent RAM segments
> in-process and when a doc needs to be indexed it's added to one of
> them. Each segment would also write its own doc stores and
> "normal" segment merging (not the inefficient merge we now do on
> flush) would merge them. This should be a good simplification in
> the chain (eg maybe we can remove the *PerThread classes). The
> segments can flush independently, letting us make much better
> concurrent use of IO & CPU.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message