lucene index не получает синхронизацию, когда происходит какое-либо обновление в БД через спящий режим

Я работаю над некоторыми вещами POC наПоиск в спящем режиме на основе Lucene используя ниже env:

Зимует-поисковые системы 4.4.2.Final.jarLucene-ядро-3.6.2.jarMySQL 5.5использование@Indexed аннотация по классу домена.использование@Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO) над полем.использование@IndexedEmbedded над коллекцией экземпляров другого класса домена.

Я сделал явную индексациюТОЛЬКО при запуске приложения(как написано в Hibernate Search API, Hibernate Search будет прозрачно индексировать каждый объект, сохраненный, обновленный или удаленный через Hibernate Core,Hibernate Search Indexing) через код ниже:

private static void doIndex() throws InterruptedException {
    Session session = HibernateSearchUtil.getSession();

    FullTextSession fullTextSession = Search.getFullTextSession(session);
    fullTextSession.createIndexer().startAndWait();

    fullTextSession.close();
}

Работает нормально при индексации поиск выполняется как на уже заполненной базе данных, так и на create & удалить операцию через ядро гибернации в приложении.

Но НЕ для какой-либо операции обновления существующих данных через Hibernate Core, поскольку я не получаю обновленные данные, когда выполняю поиск по этой информации через поиск в спящем режиме.

Дон»Не знаю причину того, что это проблема с Hibernate Search или lucene, означает, что либо индекс НЕ обновляется, либо какая-то другая причина, по которой не получается обновленный результат через Hibernate Search.

Класс пользователя:

@Entity
@Table(name = "user")
@Indexed
public class User implements java.io.Serializable {

private static final long serialVersionUID = 5753658991436258019L;
private Integer idUser;

@Field(index = Index.YES, analyze = Analyze.YES, norms = Norms.NO, store = Store.NO)
private String Name;

private Set userInfos = new HashSet(0);

public User() {
}

@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "iduser", unique = true, nullable = false)
public Integer getIdUser() {
    return idUser;
}

public void setIdUser(Integer idUser) {
    this.idUser = idUser;
}

@Column(name = "name", nullable = false, length = 256)
public String getName() {
    return this.Name;
}

public void setName(String tenantName) {
    this.Name = tenantName;
}

@IndexedEmbedded
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "user")
public Set getUserInfos() {
    return userInfos;
}

public void setUserInfos(Set userInfos) {
    this.userInfos = userInfos;
    }
}

Класс UserInfo:

@Entity
@Table(name = "userInfo")
public class UserInfo implements java.io.Serializable {

private static final long serialVersionUID = 5753658991436258019L;
private Integer iduserInfo;
private User user;
private String address; 

public UserInfo() {
}

@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "iduserInfo", unique = true, nullable = false)
public Integer getIduserInfo() {
    return iduserInfo;
}

public void setIduserInfo(Integer iduserInfo) {
    this.iduserInfo = iduserInfo;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "userId", nullable = false)
public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}

@Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO, norms=Norms.NO)
@Column(name = "address", nullable = false, length = 256)
public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}
}

Ответы на вопрос(1)

Ваш ответ на вопрос