First attempt to support class numbers from 1 to 255 - 1 is the new default class number
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanClassQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanClassQuery.java
index 16730ce..e493c9e 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanClassQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanClassQuery.java
@@ -24,22 +24,18 @@
public class SpanClassQuery extends SpanQuery {
public String field;
protected byte number;
- protected SpanQuery highlight;
+ protected SpanQuery operand;
- public SpanClassQuery (SpanQuery highlight, byte number) {
- this.field = highlight.getField();
- this.highlight = highlight;
- if (number <= 15) {
- this.number = number;
- } else{
- this.number = (byte) 0;
- };
+ public SpanClassQuery (SpanQuery operand, byte number) {
+ this.field = operand.getField();
+ this.operand = operand;
+ this.number = number;
};
- public SpanClassQuery (SpanQuery highlight) {
- this.field = highlight.getField();
- this.highlight = highlight;
- this.number = (byte) 0;
+ public SpanClassQuery (SpanQuery operand) {
+ this.field = operand.getField();
+ this.operand = operand;
+ this.number = (byte) 1;
};
public byte number () {
@@ -51,14 +47,15 @@
@Override
public void extractTerms (Set<Term> terms) {
- this.highlight.extractTerms(terms);
+ this.operand.extractTerms(terms);
};
@Override
public String toString (String field) {
StringBuffer buffer = new StringBuffer("{");
- buffer.append((int) this.number).append(": ");
- buffer.append(this.highlight.toString()).append('}');
+ short classNr = (short) this.number;
+ buffer.append(classNr & 0xFF).append(": ");
+ buffer.append(this.operand.toString()).append('}');
buffer.append(ToStringUtils.boost(getBoost()));
return buffer.toString();
};
@@ -68,7 +65,7 @@
Bits acceptDocs,
Map<Term,TermContext> termContexts) throws IOException {
return (Spans) new ClassSpans(
- this.highlight,
+ this.operand,
context,
acceptDocs,
termContexts,
@@ -79,12 +76,12 @@
@Override
public Query rewrite (IndexReader reader) throws IOException {
SpanClassQuery clone = null;
- SpanQuery query = (SpanQuery) this.highlight.rewrite(reader);
+ SpanQuery query = (SpanQuery) this.operand.rewrite(reader);
- if (query != this.highlight) {
+ if (query != this.operand) {
if (clone == null)
clone = this.clone();
- clone.highlight = query;
+ clone.operand = query;
};
if (clone != null)
@@ -96,7 +93,7 @@
@Override
public SpanClassQuery clone() {
SpanClassQuery spanClassQuery = new SpanClassQuery(
- (SpanQuery) this.highlight.clone(),
+ (SpanQuery) this.operand.clone(),
this.number
);
spanClassQuery.setBoost(getBoost());
@@ -112,7 +109,7 @@
final SpanClassQuery spanClassQuery = (SpanClassQuery) o;
- if (!highlight.equals(spanClassQuery.highlight)) return false;
+ if (!this.operand.equals(spanClassQuery.operand)) return false;
if (this.number != spanClassQuery.number) return false;
@@ -124,7 +121,7 @@
@Override
public int hashCode() {
int result = 1;
- result = highlight.hashCode();
+ result = operand.hashCode();
result += (int) number;
result ^= (result << 15) | (result >>> 18);
result += Float.floatToRawIntBits(getBoost());
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanMatchModifyClassQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanMatchModifyClassQuery.java
index d507c07..b86b818 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanMatchModifyClassQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanMatchModifyClassQuery.java
@@ -24,21 +24,21 @@
public class SpanMatchModifyClassQuery extends SpanClassQuery {
private boolean divide = false;
- public SpanMatchModifyClassQuery (SpanQuery highlight, byte number, boolean divide) {
- super(highlight, number);
+ public SpanMatchModifyClassQuery (SpanQuery operand, byte number, boolean divide) {
+ super(operand, number);
this.divide = divide;
};
- public SpanMatchModifyClassQuery (SpanQuery highlight, boolean divide) {
- this(highlight, (byte) 0, divide);
+ public SpanMatchModifyClassQuery (SpanQuery operand, boolean divide) {
+ this(operand, (byte) 1, divide);
};
- public SpanMatchModifyClassQuery (SpanQuery highlight, byte number) {
- this(highlight, number, false);
+ public SpanMatchModifyClassQuery (SpanQuery operand, byte number) {
+ this(operand, number, false);
};
- public SpanMatchModifyClassQuery (SpanQuery highlight) {
- this(highlight, (byte) 0, false);
+ public SpanMatchModifyClassQuery (SpanQuery operand) {
+ this(operand, (byte) 1, false);
};
@Override
@@ -50,8 +50,9 @@
else {
buffer.append("shrink(");
};
- buffer.append((int) this.number).append(": ");
- buffer.append(this.highlight.toString());
+ short classNr = (short) this.number;
+ buffer.append(classNr & 0xFF).append(": ");
+ buffer.append(this.operand.toString());
buffer.append(')');
buffer.append(ToStringUtils.boost(getBoost()));
@@ -60,18 +61,18 @@
@Override
public Spans getSpans (final AtomicReaderContext context, Bits acceptDocs, Map<Term,TermContext> termContexts) throws IOException {
- return (Spans) new MatchModifyClassSpans(this.highlight, context, acceptDocs, termContexts, number, divide);
+ return (Spans) new MatchModifyClassSpans(this.operand, context, acceptDocs, termContexts, number, divide);
};
@Override
public Query rewrite (IndexReader reader) throws IOException {
SpanMatchModifyClassQuery clone = null;
- SpanQuery query = (SpanQuery) this.highlight.rewrite(reader);
+ SpanQuery query = (SpanQuery) this.operand.rewrite(reader);
- if (query != this.highlight) {
+ if (query != this.operand) {
if (clone == null)
clone = this.clone();
- clone.highlight = query;
+ clone.operand = query;
};
if (clone != null)
@@ -83,7 +84,7 @@
@Override
public SpanMatchModifyClassQuery clone() {
SpanMatchModifyClassQuery spanMatchQuery = new SpanMatchModifyClassQuery(
- (SpanQuery) this.highlight.clone(),
+ (SpanQuery) this.operand.clone(),
this.number,
this.divide
);
@@ -100,7 +101,7 @@
final SpanMatchModifyClassQuery spanMatchModifyClassQuery = (SpanMatchModifyClassQuery) o;
- if (!highlight.equals(spanMatchModifyClassQuery.highlight)) return false;
+ if (!this.operand.equals(spanMatchModifyClassQuery.operand)) return false;
if (this.number != spanMatchModifyClassQuery.number) return false;
if (this.divide != spanMatchModifyClassQuery.divide) return false;
return getBoost() == spanMatchModifyClassQuery.getBoost();
@@ -111,7 +112,7 @@
@Override
public int hashCode() {
int result = 1;
- result = highlight.hashCode();
+ result = operand.hashCode();
result += number + 33_333;
result += divide ? 1 : 0;
result ^= (result << 15) | (result >>> 18);
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java
index cf12852..4b087cd 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java
@@ -24,7 +24,7 @@
private List<byte[]> highlightedPayload;
private final Spans spans;
private byte number;
- private SpanQuery highlight;
+ private SpanQuery operand;
private Boolean hasmorespans = false;
private ByteBuffer bb = ByteBuffer.allocate(9);
@@ -33,14 +33,14 @@
// This advices the java compiler to ignore all loggings
public static final boolean DEBUG = false;
- public ClassSpans (SpanQuery highlight,
+ public ClassSpans (SpanQuery operand,
AtomicReaderContext context,
Bits acceptDocs,
Map<Term,TermContext> termContexts,
byte number) throws IOException {
- spans = highlight.getSpans(context, acceptDocs, termContexts);
+ spans = operand.getSpans(context, acceptDocs, termContexts);
this.number = number;
- this.highlight = highlight;
+ this.operand = operand;
this.highlightedPayload = new ArrayList<byte[]>(6);
};
@@ -131,7 +131,7 @@
@Override
public String toString() {
- return getClass().getName() + "(" + this.highlight.toString() + ")@" +
+ return getClass().getName() + "(" + this.operand.toString() + ")@" +
(doc() + ":" + start() + "-" + end());
};
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/MatchModifyClassSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/MatchModifyClassSpans.java
index a45e1ee..d6a6318 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/MatchModifyClassSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/MatchModifyClassSpans.java
@@ -37,7 +37,7 @@
private final Logger log = LoggerFactory.getLogger(MatchModifyClassSpans.class);
// This advices the java compiler to ignore all loggings
- public static final boolean DEBUG = false;
+ public static final boolean DEBUG = true;
private int start = -1, end;
private int tempStart = 0, tempEnd = 0;
@@ -53,7 +53,7 @@
this.number = number;
this.divide = divide;
this.wrapQuery = wrapQuery;
- this.bb = ByteBuffer.allocate(9);
+ this.bb = ByteBuffer.allocate(20);
this.wrappedPayload = new ArrayList<byte[]>(6);
};
@@ -114,7 +114,7 @@
if (payload.length == 9 && bb.get() == this.number) {
bb.rewind();
tempStart = bb.getInt();
- tempEnd = bb.getInt();
+ tempEnd = bb.getInt();
if (DEBUG)
log.trace("Found matching class {}-{}", tempStart, tempEnd);
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java
index 7faadf8..bfdcdbf 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java
@@ -31,7 +31,7 @@
public SpanMatchModifyQueryWrapper (SpanQueryWrapper subquery) {
this.subquery = subquery;
- this.number = (byte) 0;
+ this.number = (byte) 1;
};
public SpanQuery toQuery () throws QueryException {