All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.redislabs.lettusearch.search.Document Maven / Gradle / Ivy

There is a newer version: 3.1.2
Show newest version
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