aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude/query/IndexedSegmentItem.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
commit72231250ed81e10d66bfe70701e64fa5fe50f712 (patch)
tree2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /container-search/src/main/java/com/yahoo/prelude/query/IndexedSegmentItem.java
Publish
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/query/IndexedSegmentItem.java')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/IndexedSegmentItem.java84
1 files changed, 84 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/IndexedSegmentItem.java b/container-search/src/main/java/com/yahoo/prelude/query/IndexedSegmentItem.java
new file mode 100644
index 00000000000..af6108b819d
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/prelude/query/IndexedSegmentItem.java
@@ -0,0 +1,84 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.prelude.query;
+
+import com.yahoo.prelude.query.textualrepresentation.Discloser;
+
+import edu.umd.cs.findbugs.annotations.NonNull;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Common implementation for Item classes implementing the IndexedItem interface.
+ * Note that this file exist in 3 copies that should be kept in sync:
+ *
+ * CompositeIndexedItem.java
+ * SimpleIndexedItem.java
+ * IndexedSegmentItem.java
+ *
+ * These should only have trivial differences.
+ * (multiple inheritance or mixins would have been nice).
+ *
+ * @author arnej27959
+ */
+public abstract class IndexedSegmentItem extends TaggableSegmentItem implements IndexedItem {
+
+ @NonNull
+ private String index = "";
+
+ protected IndexedSegmentItem(String rawWord, String current, boolean isFromQuery, boolean stemmed, Substring origin) {
+ super(rawWord, current, isFromQuery, stemmed, origin);
+ }
+
+ /**
+ * The name of the index this belongs to, or "" (never null) if not specified
+ **/
+ @NonNull
+ public String getIndexName() {
+ return index;
+ }
+
+ // encode index bytes
+ protected void encodeThis(ByteBuffer buffer) {
+ super.encodeThis(buffer);
+ putString(index, buffer);
+ }
+
+ /** Sets the name of the index to search */
+ public void setIndexName(String index) {
+ if (index == null) {
+ index = "";
+ }
+ this.index = index;
+ }
+
+ /** Appends the index prefix if necessary */
+ protected void appendIndexString(StringBuilder buffer) {
+ if (!getIndexName().equals("")) {
+ buffer.append(getIndexName());
+ buffer.append(":");
+ }
+ }
+
+ public boolean equals(Object object) {
+ if (!super.equals(object)) {
+ return false;
+ }
+ IndexedItem other = (IndexedItem) object; // Ensured by superclass
+ if (!this.index.equals(other.getIndexName())) {
+ return false;
+ }
+ return true;
+ }
+
+ public int hashCode() {
+ return super.hashCode() + 31 * index.hashCode();
+ }
+
+ public abstract String getIndexedString();
+
+ @Override
+ public void disclose(Discloser discloser) {
+ super.disclose(discloser);
+ discloser.addProperty("index", index);
+ }
+}