我有一個實體documentid如何映射Lucene的documentid休眠搜索實體領域
@Indexed
@Analyzer(impl = EnglishAnalyzer.class)
@Entity
@Table(name = "Tag", schema = "cpsc")
public class Tag extends BaseObject {
public static final String NAME_FIELD = "name";
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "uuidGenerator")
@GenericGenerator(name = "uuidGenerator", strategy = "mypackage.UuidGenerator")
@Column(name = ID_FIELD)
@DocumentId
private Long id;
...
我的發電機將創建一個獨特的長ID,並將其存儲到數據庫中保存後。
但是我怎樣才能得到documentid在lucene或設置是一樣的我的實體ID? 使用lucene文檔ID獲取字段將非常有用。
我需要它的主要原因是從實體的索引獲取術語,因爲我需要lucene id。 也許有另一種方式來獲得條款hibernate-search方式?
感謝您的任何建議。
爲了增加優秀的答案,我們不要混淆Hibernate Search使用的「文檔ID」,以便用Lucene內部使用的「docId」來標識與存儲在數據庫中的實體的關係。 Lucene docId只是相對於段(或完整索引)的序數,並且在寫入後可能會改變。例如,特定的匹配可能是索引中的第五個條目,然後在插入另一個文檔時成爲第六個條目。使用Projection可以讀取該值,但請記住讀取值將會改變。使用FullTextQuery.ID作爲穩定的參考。 – Sanne 2014-09-16 11:07:06