Эта проблема буквально безумна; Я в течение 3 часов разбиваю голову об стену, пытаясь понять, что это может вызвать.
Это POJO (добытчики и сеттеры удалены):
public class Author extends Auditable<String> implements Serializable {
private static final long serialVersionUID = -590157884690722884L;
@Id
@DocumentId
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Expose
private Long id;
@Field(name = "firstName", store = Store.YES, analyze = Analyze.NO, termVector = TermVector.NO)
@Column
@Expose
private String firstName;
@Field(name = "middleName", store = Store.YES, analyze = Analyze.NO, termVector = TermVector.NO)
@Column
@Expose
private String middleName;
@Field(name = "lastName", store = Store.YES, analyze = Analyze.NO, termVector = TermVector.NO)
@Column
@Expose
private String lastName;
С этим мостом:
public class AuthorBridge implements FieldBridge {
@Override
public void set(String s, Object o, Document document, LuceneOptions luceneOptions) {
Author author = (Author) o;
luceneOptions.addFieldToDocument(s + ".firstName", author.getFirstName(), document);
luceneOptions.addFieldToDocument(s + ".lastName", author.getLastName(), document);
}
}
В этом документе POJO (удаленные и удаленные методы установки):
@Indexed
@Entity
@DiscriminatorValue("POEM")
public class Poem extends Item implements Serializable {
private static final long serialVersionUID = 3631244231926795794L;
@Field(name = SearchConstants.POEM_FORM, store = Store.YES, analyze = Analyze.NO, termVector = TermVector.NO)
@Column
private String form; // The form of genre of the poem.
@Embedded
private Confirmation confirmation;
@Field(name = SearchConstants.TEXT, store = Store.YES, analyze = Analyze.YES, termVector = TermVector.YES)
@Analyzer(definition = SearchConstants.TEXT_ANALYZER)
@ElementCollection(fetch = FetchType.EAGER)
@IndexedEmbedded
private List<String> text;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "annotation_id")
private Annotation annotation;
@JsonIgnore
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@Fetch(value = FetchMode.SUBSELECT)
private List<Version> versions;
@JsonIgnore
@Column
private boolean processed;
@Embedded
private TopicModel topicModel;
@Column
private Integer pageNumber;
Сокращает author.lastName, ТОЛЬКО с именем Шекспира. (Меняет название на Шекспир).
Почему Lucene / Spring Search делает это? Есть тысячи других документов, с которыми это не происходит. Сокращается только имя Шекспира.
Вот объект БД, который должен отображаться в Шекспира: