List of usage examples for org.apache.cassandra.db DataRange startKey
public PartitionPosition startKey()
From source file:com.stratio.cassandra.index.RowMapperWide.java
License:Apache License
/** * Returns the Lucene {@link Filter} to get the {@link Document}s satisfying the specified {@link DataRange}. * * @param dataRange A {@link DataRange}. * @return The Lucene {@link Filter} to get the {@link Document}s satisfying the specified {@link DataRange}. *//*from ww w .j av a 2s.c om*/ public Query query(DataRange dataRange) { RowPosition startPosition = dataRange.startKey(); RowPosition stopPosition = dataRange.stopKey(); Token startToken = startPosition.getToken(); Token stopToken = stopPosition.getToken(); boolean isSameToken = startToken.compareTo(stopToken) == 0 && !tokenMapper.isMinimum(startToken); BooleanClause.Occur occur = isSameToken ? MUST : SHOULD; boolean includeStart = tokenMapper.includeStart(startPosition); boolean includeStop = tokenMapper.includeStop(stopPosition); SliceQueryFilter sqf = null; if (startPosition instanceof DecoratedKey) { sqf = (SliceQueryFilter) dataRange.columnFilter(((DecoratedKey) startPosition).getKey()); } else { sqf = (SliceQueryFilter) dataRange.columnFilter(ByteBufferUtil.EMPTY_BYTE_BUFFER); } Composite startName = sqf.start(); Composite stopName = sqf.finish(); BooleanQuery query = new BooleanQuery(); if (!startName.isEmpty()) { BooleanQuery q = new BooleanQuery(); q.add(tokenMapper.query(startToken), MUST); q.add(clusteringKeyMapper.query(startName, null), MUST); query.add(q, occur); includeStart = false; } if (!stopName.isEmpty()) { BooleanQuery q = new BooleanQuery(); q.add(tokenMapper.query(stopToken), MUST); q.add(clusteringKeyMapper.query(null, stopName), MUST); query.add(q, occur); includeStop = false; } if (!isSameToken) { Query rangeQuery = tokenMapper.query(startToken, stopToken, includeStart, includeStop); if (rangeQuery != null) query.add(rangeQuery, SHOULD); } else if (query.getClauses().length == 0) { return tokenMapper.query(startToken); } return query.getClauses().length == 0 ? null : query; }
From source file:com.stratio.cassandra.index.TokenMapper.java
License:Apache License
/** * Returns a Lucene {@link Query} for filtering documents/rows according to the row token range specified in {@code * dataRange}.//from w w w . j a v a 2 s . c o m * * @param dataRange The key range containing the row token range to be filtered. * @return A Lucene {@link Query} for filtering documents/rows according to the row token range specified in {@code * dataRage}. */ public Query query(DataRange dataRange) { RowPosition startPosition = dataRange.startKey(); RowPosition stopPosition = dataRange.stopKey(); Token start = startPosition.getToken(); Token stop = stopPosition.getToken(); boolean includeLower = includeStart(startPosition); boolean includeUpper = includeStop(stopPosition); return query(start, stop, includeLower, includeUpper); }
From source file:com.stratio.cassandra.lucene.cache.SearchCacheEntry.java
License:Apache License
private boolean validKey(DataRange dataRange) { PartitionPosition start = dataRange.startKey(); if (currentPosition.compareTo(start) == 0 && startPosition.compareTo(start) <= 0) { PartitionPosition stop = dataRange.stopKey(); return stopPosition.compareTo(stop) == 0; }// w ww .j a va 2s.c om return false; }
From source file:com.stratio.cassandra.lucene.IndexServiceSkinny.java
License:Apache License
/** {@inheritDoc} */ @Override/*from ww w. j a v a 2 s. com*/ public Optional<Query> query(DataRange dataRange) { PartitionPosition startPosition = dataRange.startKey(); PartitionPosition stopPosition = dataRange.stopKey(); return query(startPosition, stopPosition); }
From source file:com.stratio.cassandra.lucene.IndexServiceWide.java
License:Apache License
/** {@inheritDoc} */ @Override/* w w w .j a va 2 s . c o m*/ public Optional<Query> query(DataRange dataRange) { // Extract data range data PartitionPosition startPosition = dataRange.startKey(); PartitionPosition stopPosition = dataRange.stopKey(); Token startToken = startPosition.getToken(); Token stopToken = stopPosition.getToken(); Optional<ClusteringPrefix> maybeStartClustering = KeyMapper.startClusteringPrefix(dataRange); Optional<ClusteringPrefix> maybeStopClustering = KeyMapper.stopClusteringPrefix(dataRange); // Prepare query builder BooleanQuery.Builder builder = new BooleanQuery.Builder(); // Add first partition filter maybeStartClustering.ifPresent(startClustering -> { DecoratedKey startKey = (DecoratedKey) startPosition; builder.add(keyMapper.query(startKey, startClustering, null, false, true), SHOULD); }); // Add token range filter boolean includeStart = startPosition.kind() == MIN_BOUND && !maybeStartClustering.isPresent(); boolean includeStop = stopPosition.kind() == MAX_BOUND && !maybeStopClustering.isPresent(); tokenMapper.query(startToken, stopToken, includeStart, includeStop).ifPresent(x -> builder.add(x, SHOULD)); // Add last partition filter maybeStopClustering.ifPresent(stopClustering -> { DecoratedKey stopKey = (DecoratedKey) stopPosition; builder.add(keyMapper.query(stopKey, null, stopClustering, true, false), SHOULD); }); // Return query, or empty if there are no restrictions BooleanQuery query = builder.build(); return query.clauses().isEmpty() ? Optional.empty() : Optional.of(query); }
From source file:com.stratio.cassandra.lucene.key.KeyMapper.java
License:Apache License
/** * Returns the start {@link ClusteringPrefix} of the first partition of the specified {@link DataRange}. * * @param dataRange the data range/*from w w w. j av a 2 s.c o m*/ * @return the start clustering prefix of {@code dataRange}, or {@code null} if there is no such start */ public static Optional<ClusteringPrefix> startClusteringPrefix(DataRange dataRange) { PartitionPosition startPosition = dataRange.startKey(); if (startPosition instanceof DecoratedKey) { DecoratedKey startKey = (DecoratedKey) startPosition; ClusteringIndexFilter filter = dataRange.clusteringIndexFilter(startKey); if (filter instanceof ClusteringIndexSliceFilter) { ClusteringIndexSliceFilter sliceFilter = (ClusteringIndexSliceFilter) filter; Slices slices = sliceFilter.requestedSlices(); return Optional.of(slices.get(0).start()); } } return Optional.empty(); }
From source file:com.stratio.cassandra.lucene.service.RowMapperSkinny.java
License:Apache License
/** * {@inheritDoc}/*from ww w.jav a2 s . c o m*/ */ @Override public final Query query(DataRange dataRange) { RowPosition startPosition = dataRange.startKey(); RowPosition stopPosition = dataRange.stopKey(); Token startToken = startPosition.getToken(); Token stopToken = stopPosition.getToken(); boolean includeStart = tokenMapper.includeStart(startPosition); boolean includeStop = tokenMapper.includeStop(stopPosition); if (startPosition instanceof DecoratedKey) { DecoratedKey decoratedKey = (DecoratedKey) startPosition; IDiskAtomFilter filter = dataRange.columnFilter(decoratedKey.getKey()); if (filter != null && filter instanceof SliceQueryFilter) { SliceQueryFilter sliceQueryFilter = (SliceQueryFilter) filter; Composite startName = sliceQueryFilter.start(); if (startName != null && !startName.isEmpty()) { includeStart = false; } } } return tokenMapper.query(startToken, stopToken, includeStart, includeStop); }
From source file:com.stratio.cassandra.lucene.service.RowMapperWide.java
License:Apache License
/** * Returns the Lucene {@link Query} to get the {@link Document}s satisfying the specified {@link DataRange}. * * @param dataRange A {@link DataRange}. * @return The Lucene {@link Query} to get the {@link Document}s satisfying the specified {@link DataRange}. */// w w w .ja v a 2 s . c o m public Query query(DataRange dataRange) { RowPosition startPosition = dataRange.startKey(); RowPosition stopPosition = dataRange.stopKey(); Token startToken = startPosition.getToken(); Token stopToken = stopPosition.getToken(); boolean isSameToken = startToken.compareTo(stopToken) == 0 && !tokenMapper.isMinimum(startToken); BooleanClause.Occur occur = isSameToken ? MUST : SHOULD; boolean includeStart = tokenMapper.includeStart(startPosition); boolean includeStop = tokenMapper.includeStop(stopPosition); SliceQueryFilter sqf; if (startPosition instanceof DecoratedKey) { sqf = (SliceQueryFilter) dataRange.columnFilter(((DecoratedKey) startPosition).getKey()); } else { sqf = (SliceQueryFilter) dataRange.columnFilter(ByteBufferUtil.EMPTY_BYTE_BUFFER); } Composite startName = sqf.start(); Composite stopName = sqf.finish(); BooleanQuery query = new BooleanQuery(); if (!startName.isEmpty()) { BooleanQuery q = new BooleanQuery(); q.add(tokenMapper.query(startToken), MUST); q.add(clusteringKeyMapper.query(startName, null), MUST); query.add(q, occur); includeStart = false; } if (!stopName.isEmpty()) { BooleanQuery q = new BooleanQuery(); q.add(tokenMapper.query(stopToken), MUST); q.add(clusteringKeyMapper.query(null, stopName), MUST); query.add(q, occur); includeStop = false; } if (!isSameToken) { Query rangeQuery = tokenMapper.query(startToken, stopToken, includeStart, includeStop); if (rangeQuery != null) query.add(rangeQuery, SHOULD); } else if (query.getClauses().length == 0) { return tokenMapper.query(startToken); } return query.getClauses().length == 0 ? null : query; }