
com.redislabs.lettusearch.search.Document Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of lettusearch Show documentation
Show all versions of lettusearch Show documentation
Java client for RediSearch based on Lettuce
package com.redislabs.lettusearch.search;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
import io.lettuce.core.internal.LettuceAssert;
import lombok.*;
import lombok.experimental.Accessors;
@Getter
@Setter
public class Document extends LinkedHashMap {
private static final long serialVersionUID = 8972665675834263492L;
private K id;
private Double score;
private V sortKey;
private V payload;
public static DocumentBuilder builder() {
return new DocumentBuilder<>();
}
@Setter
@Accessors(fluent = true)
public static class DocumentBuilder {
private K id;
private double score = 1;
private V payload;
private Map fields = new HashMap<>();
public DocumentBuilder field(K name, V value) {
fields.put(name, value);
return this;
}
public Document build() {
LettuceAssert.notNull(id, "Id is required.");
LettuceAssert.notNull(fields, "Fields are required.");
Document document = new Document<>();
document.setId(id);
document.setScore(score);
document.setPayload(payload);
document.putAll(fields);
return document;
}
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
if (!super.equals(o))
return false;
Document, ?> document = (Document, ?>) o;
return id.equals(document.id) && Objects.equals(score, document.score)
&& Objects.equals(sortKey, document.sortKey) && Objects.equals(payload, document.payload);
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), id, score, sortKey, payload);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy