我有一个现有项目,该项目在DB中有很多数据。我正在将Hibernate Search添加到项目中。 由于我希望对现有数据建立索引,因此我想在
服务启动时开始对其进行索引 import { Component, Input } from '@angular/core';
import { NgbModal, NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'ngbd-modal-content',
template: `
<div class="modal-header">
<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss('Cross click')">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">Hi there!</h4>
</div>
<div class="modal-body">
<p>Hello, {{name}}!</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" (click)="activeModal.close('Close click')">Close</button>
</div>
`
})
export class NgbdModalContent {
@Input() name;
constructor(public activeModal: NgbActiveModal) { }
}
@Component({
selector: 'ngbd-modal-component',
templateUrl: 'src/lazy/modal-component.html'
})
export class NgbdModalComponent {
constructor(private modalService: NgbModal) { }
open() {
const modalRef = this.modalService.open(NgbdModalContent);
modalRef.componentInstance.name = 'World';
}
}
但是我只想做一次(当现有数据未建立索引时),因为以后所有的数据更改都将被同步。
所以我的问题是:Hibernate Search是否有任何方法可以检查是否已经为实体创建了索引?我需要它来了解是否必须重建所有索引(在首次启动时)(例如,升级后在我的应用程序启动时,并且不必清除所有索引并再次创建它们),以避免长时间每次重新启动应用程序时启动。
答案 0 :(得分:2)
Hibernate Search无法安全可靠地检测到这一点,因此我们特意忽略了这一点。
最好添加一个自己触发的方法,以便可以显式控制它;也可以通过JMX轻松调用MassIndexer。
我通常在“管理员”控制面板视图中添加“重建索引”按钮;总是有用的;-)