blob: 9d0352d7a848326cf2dcfa31deaa0ef8ff4f71b3 [file] [log] [blame]
Eliza Margarethaa2603fa2014-01-22 10:59:25 +00001package de.ids_mannheim.korap.query.spans;
2
3import java.io.IOException;
Eliza Margarethad28469f2014-03-10 12:42:21 +00004import java.util.ArrayList;
Eliza Margarethaa2603fa2014-01-22 10:59:25 +00005import java.util.Collection;
6
7import org.apache.lucene.search.spans.Spans;
8
9/** A span kept as a candidate for matching with another Span
10 * @author margaretha
11 * */
Eliza Margaretha371eab32014-10-29 14:53:37 +000012public class CandidateSpans implements Comparable<CandidateSpans>{
Eliza Margarethaa2603fa2014-01-22 10:59:25 +000013 private int doc,start,end;
14 private long cost;
Eliza Margarethad28469f2014-03-10 12:42:21 +000015 private Collection<byte[]> payloads = new ArrayList<>();
Eliza Margaretha8e274e32014-01-28 15:09:30 +000016 private int position;
Eliza Margaretha371eab32014-10-29 14:53:37 +000017 private CandidateSpans childSpan; // used for multiple distance with unordered constraint
Eliza Margarethac5f4adb2014-11-03 11:28:00 +000018 protected short spanId;
Eliza Margarethae7938d32014-07-29 12:12:15 +000019
Eliza Margarethaa2603fa2014-01-22 10:59:25 +000020
Eliza Margaretha371eab32014-10-29 14:53:37 +000021 public CandidateSpans(Spans span) throws IOException {
Eliza Margarethaa2603fa2014-01-22 10:59:25 +000022 this.doc = span.doc();
23 this.start = span.start();
24 this.end = span.end();
Eliza Margaretha325f3de2014-08-12 15:34:59 +000025 this.cost = span.cost();
Eliza Margarethad28469f2014-03-10 12:42:21 +000026 if (span.isPayloadAvailable())
27 setPayloads(span.getPayload());
Eliza Margarethae7938d32014-07-29 12:12:15 +000028
29 /*if (span instanceof ElementSpans ){
30 ElementSpans s = (ElementSpans) span;
31 this.elementRef = s.getElementRef();
32 }
33 else if (span instanceof AttributeSpans){
34 AttributeSpans s = (AttributeSpans) span;
35 this.elementRef = s.getElementRef();
36 } */
Eliza Margaretha8e274e32014-01-28 15:09:30 +000037 }
38
Eliza Margaretha371eab32014-10-29 14:53:37 +000039 public CandidateSpans(Spans span, int position) throws IOException {
Eliza Margaretha8e274e32014-01-28 15:09:30 +000040 this(span);
41 this.position = position;
Eliza Margarethaa2603fa2014-01-22 10:59:25 +000042 }
43
Eliza Margaretha371eab32014-10-29 14:53:37 +000044 public CandidateSpans(int start, int end, int doc, long cost,
Eliza Margaretha9738c392014-02-03 17:04:53 +000045 Collection<byte[]> payloads) {
46 this.start = start;
47 this.end = end;
48 this.doc = doc;
49 this.cost = cost;
Eliza Margarethad28469f2014-03-10 12:42:21 +000050 if (payloads != null) setPayloads(payloads);
Eliza Margaretha9738c392014-02-03 17:04:53 +000051 }
52
Eliza Margarethaa2603fa2014-01-22 10:59:25 +000053 public int getDoc() {
54 return doc;
55 }
56 public void setDoc(int doc) {
57 this.doc = doc;
58 }
59 public int getStart() {
60 return start;
61 }
62 public void setStart(int start) {
63 this.start = start;
64 }
65 public int getEnd() {
66 return end;
67 }
68 public void setEnd(int end) {
69 this.end = end;
70 }
71
72 public Collection<byte[]> getPayloads() {
73 return payloads;
74 }
75
Eliza Margaretha325f3de2014-08-12 15:34:59 +000076 public void setPayloads(Collection<byte[]> payloads) {
77
Eliza Margarethad28469f2014-03-10 12:42:21 +000078 for (byte[] b : payloads){
Eliza Margaretha325f3de2014-08-12 15:34:59 +000079 if (b == null)
80 this.payloads.add(null);
81 else
82 this.payloads.add(b.clone());
Eliza Margarethad28469f2014-03-10 12:42:21 +000083 }
Eliza Margarethaa2603fa2014-01-22 10:59:25 +000084 }
85
86 public long getCost() {
87 return cost;
88 }
89
90 public void setCost(long cost) {
91 this.cost = cost;
92 }
Eliza Margaretha8e274e32014-01-28 15:09:30 +000093
94 public int getPosition() {
95 return position;
96 }
97
98 public void setPosition(int position) {
99 this.position = position;
100 }
Eliza Margaretha6651fc32014-02-18 14:57:47 +0000101
Eliza Margaretha371eab32014-10-29 14:53:37 +0000102 public CandidateSpans getChildSpan() {
Eliza Margaretha6651fc32014-02-18 14:57:47 +0000103 return childSpan;
104 }
105
Eliza Margaretha371eab32014-10-29 14:53:37 +0000106 public void setChildSpan(CandidateSpans childSpan) {
Eliza Margaretha6651fc32014-02-18 14:57:47 +0000107 this.childSpan = childSpan;
108 }
Eliza Margarethae7938d32014-07-29 12:12:15 +0000109
Eliza Margaretha98c200e2014-10-15 13:59:58 +0000110 public short getSpanId() {
Eliza Margarethac5f4adb2014-11-03 11:28:00 +0000111 return spanId;
Eliza Margarethae7938d32014-07-29 12:12:15 +0000112 }
113
Eliza Margaretha98c200e2014-10-15 13:59:58 +0000114 public void setSpanId(short elementRef) {
Eliza Margarethac5f4adb2014-11-03 11:28:00 +0000115 this.spanId = elementRef;
Eliza Margarethae7938d32014-07-29 12:12:15 +0000116 }
117
118 @Override
Eliza Margaretha371eab32014-10-29 14:53:37 +0000119 public int compareTo(CandidateSpans o) {
Eliza Margarethab098bbd2014-07-29 13:25:57 +0000120 if (this.doc == o.doc){
121 if (this.getStart() == o.getStart()){
122 if (this.getEnd() == o.getEnd())
123 return 0;
124 if (this.getEnd() > o.getEnd() )
125 return 1;
126 else return -1;
127 }
128 else if (this.getStart() < o.getStart())
129 return -1;
130 else return 1;
Eliza Margarethae7938d32014-07-29 12:12:15 +0000131 }
Eliza Margarethab098bbd2014-07-29 13:25:57 +0000132 else if (this.doc < o.doc)
Eliza Margarethae7938d32014-07-29 12:12:15 +0000133 return -1;
Eliza Margarethab098bbd2014-07-29 13:25:57 +0000134 else return 1;
Eliza Margarethae7938d32014-07-29 12:12:15 +0000135 }
Eliza Margarethaa2603fa2014-01-22 10:59:25 +0000136}