diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
commit | 72231250ed81e10d66bfe70701e64fa5fe50f712 (patch) | |
tree | 2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /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.java | 84 |
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); + } +} |