|
From: <mrp...@us...> - 2010-08-02 21:37:50
|
Revision: 3394
http://bigdata.svn.sourceforge.net/bigdata/?rev=3394&view=rev
Author: mrpersonick
Date: 2010-08-02 21:37:44 +0000 (Mon, 02 Aug 2010)
Log Message:
-----------
keeping inline values out of the lexicon indices
Modified Paths:
--------------
trunk/bigdata-rdf/src/java/com/bigdata/rdf/rio/AsynchronousStatementBufferFactory.java
Modified: trunk/bigdata-rdf/src/java/com/bigdata/rdf/rio/AsynchronousStatementBufferFactory.java
===================================================================
--- trunk/bigdata-rdf/src/java/com/bigdata/rdf/rio/AsynchronousStatementBufferFactory.java 2010-08-02 21:36:53 UTC (rev 3393)
+++ trunk/bigdata-rdf/src/java/com/bigdata/rdf/rio/AsynchronousStatementBufferFactory.java 2010-08-02 21:37:44 UTC (rev 3394)
@@ -2803,11 +2803,28 @@
*/
@SuppressWarnings("unchecked")
static <V extends BigdataValue> IChunkedIterator<V> newT2IdIterator(
- final Iterator<V> itr, final int chunkSize) {
+ final LexiconRelation r, final Iterator<V> itr,
+ final int chunkSize) {
- return new ChunkedWrappedIterator(new Striterator(itr), chunkSize,
- BigdataValue.class);
+ return new ChunkedWrappedIterator(new Striterator(itr)
+ .addFilter(new Filter() {
+ private static final long serialVersionUID = 1L;
+
+ /*
+ * Filter hides inline terms since we don't want to write
+ * them on the forward index.
+ */
+ @Override
+ protected boolean isValid(Object obj) {
+
+ // will set IV on BigdataValues as a side-effect
+ return r.getInlineIV((Value) obj) != null;
+
+ }
+
+ }), chunkSize, BigdataValue.class);
+
}
/**
@@ -3064,6 +3081,13 @@
}
+ if (v.getIV().isInline()) {
+
+ // Do not write inline terms on the reverse index.
+ continue;
+
+ }
+
final byte[] key = v.getIV().encode(tmp.reset())
.getKey();
@@ -3767,8 +3791,9 @@
try {
final Callable<Void> task = new AsyncTerm2IdIndexWriteTask(
- tidsLatch, lexiconRelation, newT2IdIterator(values
- .values().iterator(), producerChunkSize),
+ tidsLatch, lexiconRelation, newT2IdIterator(
+ lexiconRelation, values.values().iterator(),
+ producerChunkSize),
buffer_t2id);
// queue chunks onto the write buffer.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|