我有一个带有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;
...
我的生成器将创建一个唯一的Long ID,并将其保存后存储到数据库中。
但是我如何在Lucene中获取documentid或set与我的实体ID相同?
获取具有Lucene文档ID的字段将非常有用。
我需要它的主要原因是从实体的索引中获取期限,为此我需要使用Lucene ID。
也许还有另一种方式来获取术语“休眠搜索”方式?
感谢您的任何建议。
最佳答案
这里有几件事。首先,您不必同时指定@Id
和@DocumentId
。如果不指定@DocumentId
,则JPA ID会自动作为文档ID。如果要显式使用其他字段作为Lucene文档ID,则仅使用@DocumentId
才有意义。
要回答您的问题-“但是我如何在Lucene或set中获取documentid与我的实体ID相同”,它们已经相同。并且已经有一个文档ID字段,例如,您可以通过投影检索该字段。要使用的投影常数为FullTextQuery.DOCUMENT_ID
。另请参见http://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#projections。
关于java - 如何将Lucene Documentid映射到Hibernate搜索实体字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25780538/