@Entity
@Indexed
@SequenceGenerator(name="subjectSeq", sequenceName="subjectSeq")
public class AppInfo {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="subjectSeq")
public Integer id;
public Integer district;
@Field
@Boost(2.0f)
public String appName;
public String thumbnail;
public Integer statistics;
@Field
public String description;
public Integer publisher;
public Date publishAt = new Date();
@ManyToOne
@IndexedEmbedded
@Boost(1.5f)
@JoinColumn(name="type")
public AppType type;
@ManyToMany
@JoinTable(name="appInfo_appCatalog",
joinColumns={@JoinColumn(name="info_id", referencedColumnName="id")},
inverseJoinColumns={@JoinColumn(name="catalog_id", referencedColumnName="id")})
@IndexedEmbedded
@Boost(1.5f)
public List<AppCatalog> catalogs;
}
@Entity
@SequenceGenerator(name="appTypeSeq", sequenceName="appTypeSeq")
public class AppType {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="appTypeSeq")
public Integer id;
@Field
public String name;
}
내 검색 코드 색인을 생성하지 않습니다 @IndexedEmbedded 것은 :최대 절전 모드 검색
QueryBuilder qb = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(AppInfo.class).get();
org.apache.lucene.search.Query query = qb
.keyword().fuzzy()
.onFields("appName", "description", "type.name", "catalogs.name")
.matching(searchString)
.createQuery();
문제는 필드와 일치하는 "되는 searchString"는 "프로그램 응용"과 "설명"결과를 가지고 있지만 하나의 일치 "유형입니다. name "또는"catalogs.name "에 결과가 없습니다.
엔티티 AppType이 인덱싱되지 않았습니까? 당신이 이 APPTYPE뿐만 아니라 색인화해야을 @IndexedEmbedded 사용하고 있기 때문에
@Indexed 주석도 AppType에 추가해야합니다. – gmansoor